PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit OpenGL Instancing und GLSL


Asmodeus
2006-12-05, 10:17:44
Ich möchte Instancing auf der 8800GTX unter OpenGL im Zusammenhang mit GLSL verwenden. Als Treiber nutze ich den 97.02 und habe mittels NVemulate den GLSL Compiler Device Support auf G80 gestellt. Außerdem habe ich in meinem VertexShader gleich zu Anfang #extension GL_EXT_gpu_shader4 : enable gesetzt. Trotzdem bekomme ich beim Compilieren des VertexShaders immer die Fehlermeldung error C1008: undefined variable "gl_InstanceID". Ich verstehe jedoch nicht wieso, denn laut den Specs heißt die neu hinzugekommene Variable für den Instanzenzähler gl_InstanceID, also wieso erkennt der Compiler sie dann nicht?

EDIT: Die ebenfalls neu hinzugekommene Variable gl_VertexID erkennt der Compiler im VertexShader jedoch.
EDIT2: Jedoch kommt nach dem Linken dann auch bei gl_VertexID die Fehlermeldung error: unknown builtin vertex attribute (named gl_VertexID) encountered

Gruss, Carsten.

Asmodeus
2006-12-07, 12:24:30
Laut Nvidia haben es die beiden Built In Variablen gl_InstanceID und gl_VertexID noch nicht in den aktuellen Treiber 97.02 geschafft. Die Fehlermeldungen, dass die Variablen unbekannt sind, sind also leider korrekt. Ich finde es nur toll, dass man auf so etwas nichtmal auf den Developerseiten oder in den Release Notes hingewiesen wird.

Gruss, Carsten.

Juerg
2006-12-07, 21:35:02
nVidia hat ja auch bisher noch keine Shader 4.0 Treiber für den G80 zur Verfügung gestellt oder?

Asmodeus
2006-12-08, 07:29:53
nVidia hat ja auch bisher noch keine Shader 4.0 Treiber für den G80 zur Verfügung gestellt oder?

Ich persönlich sehe die Sache so, wenn ein Hersteller in seinem OpenGL Treiber mittels Extensionstring eine bestimmte Extension als vorhanden und nutzbar anzeigt, dann gehe ich als Programmierer davon aus, dass ich diese Extension auch vollständig nutzen kann. Wenn, wie in diesem Fall beim 97.02 Treiber die Sache noch nicht richtig funktioniert, dann darf meiner Meinung nach der Hersteller diese Extension einfach noch nicht über den Extensionstring freigeben.

Gruss, Carsten.

ScottManDeath
2006-12-08, 09:23:01
Naja, ohne nvEmulate ist die Extension ja nicht da...., d.h. Du hast Dich wissend ins Messer gestürzt ;)

Asmodeus
2006-12-08, 11:34:51
Naja, ohne nvEmulate ist die Extension ja nicht da...., d.h. Du hast Dich wissend ins Messer gestürzt ;)

Da hast Du natürlich recht, doch für eine nicht funktionierende Extension brauch ich auch kein nvEmulate, dass klappt auch ohne nvEmulate schon hervorragend. ;)

Gruss, Carsten.

ScottManDeath
2006-12-09, 08:08:06
Sieh es als Sneak Preview an ;)