Registriert: Mo Nov 24, 2003 21:28 Beiträge: 28 Wohnort: Kiel
Hallo Leute! Ich bin's mal wieder.
Wisst ihr zufällig wie ich von innerhalb meines C++-Programms abfragen kann welche OpenGL-Version installiert ist? Ich benutze nämlich für die Texturen innerhalb von gluBuild2DMipmaps das GL_BGR (in einem voherigen Thread habt ihr mir da ja schon auf die Sprünge geholfen); das ist aber erst ab OpenGL 1.2 und glut 1.3 verfügbar.
Ich würd natürlich gern beim Start meines Proggis checken welche Versionen installiert sind und ggf. abbrechen.
Geht das mit irgendeiner Art glGet-Befehl?
Hab schon mal folgendes ausprobiert zum glGet (jetzt nich zur Version):
GLint lights[1];
glGetIntegerv(GL_MAX_LIGHTS, lights);
cout << "Maximale Anzahl an möglichen Lichtquellen: " << lights[0] << endl;
Das sollte mir dann ja auf der Konsole die Anzahl der maximal möglichen Lichtquellen angezeigt werden, sollte mindestens bei 8 liegen. Allerdings wird mir jedesmal eine astronomische Zahl im
10-stelligen, negativen Bereich geliefert. Benutz ich den Befehl falsch?
Könnt ihr mir sagen, wo ich eine aktuellere Fassung von OpenGL für Windows XP herkriege?
OpenGL.com oder so? Unter Win XP ist nämlich OpenGL in der Version < 1.2 installiert.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
So. Das mit der Version und den Lichtern funktioniert natürlich nur dann wenn du OpenGL bereits initialisiert hast. Ich schätze mal das hast du bei dir dort noch nicht getan, oder?
Die Version bekommst du mit "glGetString(GL_VERSION)" bzw für Glut mit "gluGetString(GLU_VERSION)". Es handelt sich dabei um einen Text folgendes Formates "1.4.0.12". Für dich sind die ersten beiden stellen wichtig. Der Rest ist Buildnumber der DLL.
Und jain für WindowsXP bekommst du von Microsoft keine neue OpenGL Version. Ist ja auch Logisch. Die wollen ja, dass du Direct3D benutzt. Es handelt sich bei der OpenGL.dll auch um eine rein Softwareseitige implementierung. Als alternative kannst du Mesa3D verwenden. Das ist zwar auch rein Softwareseitig aber dafür ist dort bis OpenGL 1.5 so ziemlich alles implementiert.
Die OpenGL Version nützt dir unter C++ (Visual Studio?) wahrscheinlich auch nicht viel, da in den Headerdateien meist nur die OpenGL Version 1.1 mit ein paar Microsoft Extensions angeführt ist (sehr ähnlich zu Borlands originaler OpenGL.pas).
Lade dir deshalb zusätzlich noch extgl oder glew runter, damit du aus deinem Programm auch wirklich Zugriff auf neuere Corefunktionen und Extensions hast.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Genau. Die C++ Header. Schau mal hier. Das ist eine Erweiterung von SGI für die C++ Header. Mittlerweile haben sie auch die OpenGL 1.5 Extensions eingebaut.
Hmm, nimm lieber glew ( http://glew.sourceforge.net/ ). Die basiert ebenfalls auf der SGI Implementation, kann sofort in Windows eingebunden werden und enthält einen Mechanismus direkt OpenGL Fähigkeiten abfragen zu können um z.B. auf diverse Renderpfade ausweichen zu können.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.