Wie sollte man am besten die Version von GLSL finden, die von einer OpenGL-Implementierung unterstützt wird, und zwar auf eine Weise, die zuverlässig programmgesteuert verwendet werden kann?
Ist der beste Weg, die GL_SHADING_LANGUAGE_VERSION
-Zeichenfolge zu erhalten und zu parsen? Kann man darauf vertrauen, dass es in einem klar definierten Format zurückgegeben wird? Mein Intel-Treiber gibt 1.20
zurück, was einfach genug ist, um zu parsen, aber meine nVidia-Karte gibt 4.20 NVIDIA via Cg compiler
zurück. Kann man darauf vertrauen, dass es mit dem (\d+)\.(\d+)( .*)?
regex übereinstimmt? Diese Antwort scheint etwas anderes zu bedeuten , Rückgabe von OpenGL ES GLSL ES 1.0
.
Stimmt irgendetwas davon und / oder gibt es einen anderen Weg? Speziell möchte ich überprüfen, dass mindestens GLSL 1.20 unterstützt wird.
Es gibt eine spezifische Zuordnung zwischen der OpenGL-Version und der unterstützten GLSL-Version:
%Vor%Es gibt eine gut definierte API für die Abfrage der OpenGL-Version. Verwenden Sie die obige Tabelle für die Zuordnung zu GLSL-Versionen (nach OpenGL-3.3 ist es sehr logisch).
Darüber hinaus definiert die Spezifikation das Format der GL_VERSION und GL_SHADING_LANGUAGE_VERSION zu
beginnt mit einer Versionsnummer. Die Versionsnummer verwendet eines dieser Formulare:
%Vor%
Wenn Sie erwarten, es aus dem Code zu bekommen, versuchen Sie es mit glGetString
mit GL_SHADING_LANGUAGE_VERSION