Pregunta

Como todos sabemos, finalmente, llegar a escapar, la especificación es una cosa y la puesta en práctica es otra. La mayoría de los insectos que causan a nosotros mismos, pero a veces eso no es el caso.

Creo que sería útil hacer una pequeña lista de:

¿Cuáles son los errores detectados en los controladores de la GPU, relacionadas con la aplicación de las últimas versiones de OpenGL y GLSL?

Por favor, recuerde que debe colocar siempre en el tarjeta gráfica relevante y versión del controlador .

¿Fue útil?

Solución

Permítanme comenzar:

  • GPU: confirmado el AMD / ATI Radeon HD 4650
  • Tipo: problema GLSL
  • versión GL relacionados: confirmó en 3.3, 3.1 y hasta probablemente (o incluso antes)
  • Enlace relacionado: http://forums.amd.com/devforum /messageview.cfm?catid=392&threadid=139288
  • versión del controlador: confirmado en el catalizador 10,10 (09/28/2010)
  • Estado: a partir de 2010-11-27 tiene una solución, pero aparrently no llegó a la versión del controlador pública todavía (por lo que incluso si el arreglo se libera, los usuarios con la versión no tan reciente de los conductores seguirán siendo ser afectados por igual mes)
  • Descripción:

Si en su vertex shader usted tiene cualquier variable attribute (in) cuyo nombre es léxicamente después gl_, entonces usted no puede utilizar una función de atributos, a saber gl_VertexID y gl_InstanceID. Si lo intenta, el sombreado no funcionará (pantalla en blanco, probablemente).

  • Solución (nuevo):

Sólo disponible con GLSL 3.3 y arriba, o con el GL_ARB_explicit_attrib_location extensión.

Definir la ubicación de cualquier atributo explícitamente a ser igual a 0, añadiendo layout(location=0) a su declaración en el vertex shader. Es posible, pero no es necesario utilizar esto para otros atributos; lo importante es que cualquier necesidades de atributos tengan lugar igual a 0. Después de hacer eso, la denominación ya no es importante.

  • Solución (alternativa):

Utilice una convención de nombres que requiere que un nombre a las variables de atributos a partir de a_, que no hará daño a su legibilidad del código y hará que todos ellos sean léxico antes gl_ (zona segura).

Otros consejos

Otro fallo gl_VertexID:

  • GPU: NVIDIA GeForce 9400M
  • Tipo: problema GLSL
  • Versión del controlador: NVDANV50Hal 1.6.36
  • Versión OpenGL: 2.1, 1.2 GLSL usando extensión GL_EXT_gpu_shader4

Esto se produce en Macbooks. Es posible que el nuevo controlador que permite OpenGL 3.2 que viene con OS X Lion ha solucionado el problema, pero una gran cantidad de marcos solamente están configurados para utilizar el legado 2.1 conductores por lo que este sigue siendo relevante.

Si usted lee gl_VertexID antes de leer otro atributo en un vertex shader, el último atributo volverá basura datos. Si el otro atributo es gl_Color, independientemente de cómo se utiliza, no se procesará. Acceder a otros elementos de construcción en los atributos pueden conducir a otro tipo de comportamiento extraño.

  • Solución:

Si tiene que usar gl_VertexID, leer todos los demás atributos que se necesitan en primer lugar. Si se lee otro atributo primero, seguido por gl_VertexID, cualquier lecturas posteriores del atributo no tendrán ningún problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top