Domanda

Sto sviluppando un'applicazione Android.

Ho il seguente vertex shader.

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

E questo è lo shader frammento:

precision mediump float; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform sampler2D texSampler2D;

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

C'è qualche problema se ho lasciato vertexTexCoord non legato? Penso che devo usare un vertice diverso e shader frammento se il mio modello non ha una consistenza, non lo è?

Grazie.

È stato utile?

Soluzione

Sì, si dovrebbe avere un altro dello shader per i modelli senza consistenza. In caso contrario, penso che si verificherà l'attuazione comportamento dipendente.

In relazione al che, la documentazione OpenGL dice:

  

attributi di Active che non sono   esplicitamente legato sarà vincolato dal   linker quando glLinkProgram viene chiamato. Le posizioni assegnate possono essere interrogati   chiamando glGetAttribLocation.

Quindi, se gli attributi di vertice sono abilitati si cercherà di ottenere vertexTexCoord da uno degli attributi. Non sono sicuro di cosa accadrà se non più di numero di attributi necessari per il modello untextured sono abilitati e non si dovrebbe fare affidamento su cosa del genere. Utilizzare un altro shader.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top