Question

Je développe une application Android.

Je le vertex shader suivant.

"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; 
} 
";

Et voici le shader fragment:

precision mediump float; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform sampler2D texSampler2D;

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

Y at-il problème si je suis parti vertexTexCoord non liée? Je pense que je dois utiliser un sommet différent et shaders fragment si mon modèle ne possède pas de texture, est pas?

Merci.

Était-ce utile?

La solution

Oui, vous devriez avoir un autre shaders pour les modèles sans texture. Sinon, je pense que vous éprouverez le comportement dépend de la mise en œuvre.

liée à celle, la documentation OpenGL dit:

  

attributs actifs qui ne sont pas   explicitement lié sera lié par la   éditeur de liens lorsque glLinkProgram est appelé. Les emplacements attribués peuvent être interrogés   en appelant glGetAttribLocation.

Donc, si les attributs de vertex sont activés, il va essayer d'obtenir vertexTexCoord d'un des attributs. Je ne sais pas ce qui se passera si pas plus que le nombre d'attributs nécessaires pour le modèle untextured sont activés et vous ne devriez pas compter sur chose comme ça. Utilisez un autre shader.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top