Pregunta

Estoy desarrollando una aplicación para Android.

Tengo el siguiente shader vértice.

"attribute vec4 vertexPosition; 
attribute vec4 vertexNormal; 
attribute vec2 vertexTexCoord; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform mat4 modelViewProjectionMatrix; 

void main() 
{ 
   gl_Position = modelViewProjectionMatrix * vertexPosition; 
   normal = vertexNormal; 
   texCoord = vertexTexCoord; 
} 
";

Y este es el shader de fragmento:

precision mediump float; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform sampler2D texSampler2D;

void main()
{ 
   gl_FragColor = texture2D(texSampler2D, texCoord); 
} 
";

¿Hay algún problema si dejaba vertexTexCoord no unido? Creo que debe utilizar un vértice diferente y fragment shader si mi modelo no tiene una textura, no es?

Gracias.

¿Fue útil?

Solución

Si usted debe tener otro shader para los modelos sin textura. De lo contrario, creo que va a experimentar un comportamiento dependiente de la implementación.

En relación con esto, la documentación de OpenGL dice:

  

atributos activos que no son   unido de forma explícita será atado por la   enlazador cuando se llama glLinkProgram. Los lugares asignados se pueden consultar   llamando glGetAttribLocation.

Así que si están habilitados los atributos de vértices que tratará de conseguir vertexTexCoord de uno de los atributos. No estoy seguro de lo que sucederá si están habilitados no más del número de atributos necesarios para el modelo sin textura y usted no debe confiar en algo así. Utilice otro shader.

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