2011-06-02 26 views
7

En GLSL spec y other sources about GLSL, los tipos de muestreador están disponibles en 3 dimensiones: sampler1D, sampler2D y sampler3D.sampler1D no es compatible con nVidia GLSL?

Sin embargo, cuando intento compilar programas GLSL usando WebGL en Chrome (tanto regular como también en Canarias), sampler2D y sampler3D son aceptados, pero sampler1D da un error de sintaxis. Código:

uniform sampler1D tex1; 

error:

FS ERROR: ERROR: 0:9: 'sampler1D' : syntax error 

Este error se produce incluso si doy Canarias el argumento de línea de comandos --use-gl=desktop.

Estoy ejecutando Chrome 12.0.742.68 beta-m, y Canario 13.0.782.1. El chipset que tengo es Nvidia Quadro NVS 160M.

¿Es posible que Nvidia permita muestreadores de texturas de 2 y 3 dimensiones, pero no 1D? Intenté buscar información a tal efecto, pero no encontré nada.

Respuesta

9

No, su problema no está relacionado con "NVIDIA GLSL". WebGL está basado en OpenGL ES 2.0 y OpenGL ES 2.0 no tiene texturas 1D, solo texturas 2D y 3D (como extensiones), por lo que no podrá usar un sampler1D en WebGL.

¿Solución? Solo use una textura 2D con una altura de 1 con un sampler2D.

Nota: Si utiliza Desktop OpenGL (OpenGL> = 2.0), podrá usar texturas 1D y sampler1D.

+1

Efectivamente, tienes razón. Para otros interesados, la especificación GLSL ES 2.0 está aquí: http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf Esto muestra que tanto 'sampler1D' como' sampler3D' son palabras clave "reservado para uso futuro. Su uso dará como resultado un error". – LarsH

+1

P.S. Gracias por responder. – LarsH

+1

Las texturas 2D son cuadradas, por lo que una con una altura de 1 también tiene un ancho de 1. Necesita una textura 2DRect que, al igual que las texturas 1D, están disponibles en el escritorio GL pero no en GLES sin una extensión –