Bekannte Fehler in OpenGL 3, OpenGL 4-Implementierungen

9

Wie wir alle irgendwann wissen, ist die Spezifikation eine Sache und die Implementierung eine andere. Die meisten Bugs verursachen wir selbst, aber manchmal ist das nicht der Fall.

Ich glaube, es wäre nützlich, eine kleine Liste von:

zu machen

Was sind die derzeit bekannten Fehler in den GPU-Treibern, die mit der Implementierung neuer Versionen von OpenGL und GLSL zusammenhängen?

Bitte denken Sie daran, immer die relevante Grafikkarte und Treiberversion zu veröffentlichen.

    
Kos 27.11.2010, 14:17
quelle

2 Antworten

2

Lass mich anfangen:

  • GPU: bestätigt auf AMD / ATI Radeon HD 4650
  • Geben Sie Folgendes ein: GLSL-Problem
  • GL version bezogen: bestätigt auf 3.3, wahrscheinlich 3.1 und höher (oder sogar davor)
  • Relevanter Link: Ссылка
  • Treiberversion: bestätigt auf Catalyst 10.10 (9-28-2010)
  • Status: seit 2010-11-27 hat es einen Fix, aber es hat noch nicht die öffentliche Treiberversion erreicht (also selbst wenn der Fix veröffentlicht wird, werden Benutzer mit nicht so aktuellen Versionen von Treibern immer noch für etwa Monate betroffen sein)
  • Beschreibung:

Wenn Sie in Ihrem Vertex-Shader eine attribute ( in ) Variable haben, deren Name lexikalisch nach gl_ steht, dann können Sie keine eingebauten Attribute verwenden, nämlich gl_VertexID und gl_InstanceID . Wenn Sie es versuchen, wird der Shader nicht funktionieren (leerer Bildschirm, wahrscheinlich).

  • Workaround (neu):

Nur verfügbar mit GLSL 3.3 und höher oder mit der Erweiterung GL_ARB_explicit_attrib_location

>

Definieren Sie die Position eines beliebigen Attributs explizit als 0, indem Sie layout(location=0) an seine Deklaration im Vertex-Shader anhängen. Sie können, müssen dies aber nicht für andere Attribute verwenden; Wichtig ist, dass ANY-Attribute die Position 0 haben müssen. Nachdem Sie das getan haben, ist die Benennung nicht mehr wichtig.

  • Workaround (alternativ):

Verwenden Sie eine Namenskonvention, bei der Sie Ihre Attributvariablen mit a_ benennen müssen, was die Lesbarkeit des Codes nicht beeinträchtigt und alle Wörter vor gl_ (sichere Zone) lexikalisch erscheinen lassen.

    
Kos 28.11.2010, 17:05
quelle
1

Ein weiterer gl_VertexID Bug:

  • GPU: NVIDIA GeForce 9400M
  • Geben Sie Folgendes ein: GLSL-Problem
  • Treiberversion: NVDANV50Hal 1.6.36
  • OpenGL-Version: 2.1, GLSL 1.2 mit der Erweiterung GL_EXT_gpu_shader4

Dies tritt bei Macbooks auf. Es ist möglich, dass der neue Treiber, der OpenGL 3.2 mit OS X Lion unterstützt, das Problem behoben hat, aber viele Frameworks sind nur für die Verwendung der älteren 2.1-Treiber konfiguriert, so dass dies immer noch relevant ist.

Wenn Sie gl_VertexID lesen, bevor Sie ein anderes Attribut in einem Vertex-Shader lesen, gibt das letztere Attribut Junk-Daten zurück. Wenn das andere Attribut gl_Color ist, egal wie es verwendet wird, wird nichts gerendert. Der Zugriff auf andere integrierte Attribute kann zu einem anderen seltsamen Verhalten führen.

  • Workaround:

Wenn Sie gl_VertexID verwenden müssen, lesen Sie alle anderen Attribute, die Sie zuerst benötigen. Wenn Sie zuerst ein anderes Attribut lesen, gefolgt von gl_VertexID, funktionieren alle nachfolgenden Lesevorgänge des Attributs einwandfrei.

    
Kyle 18.05.2012 07:32
quelle

Tags und Links