2012-03-30 6 views
25

Ich bin neu in OpenGL ES 2.0 und kann den folgenden einfachste Shader nicht verstehen:Warum nicht vec3 für OpenGL ES 2.0 gl_Position?

attribute vec4 vPosition; 
void main() 
{ 
    gl_Position = vPosition; 
} 

Meine Frage ist, da eine Position ein Vektor von (x, y, z) wäre, warum ist gl_Position ein vec4 statt vec3?

+0

Einige gute Erklärungen in diesem Thread: http://www.gamedev.net/topic/506162-3d-math-4-component-vectors/ – Tim

Antwort

3

Wenn Sie Ihre Ecken an den Shader direkt in Clip Raum bieten, könnten Sie einfach x, y, z geben und 1 als w-Komponente in diesem Shader hinzufügen .

attribute vec3 vPosition; // vec3 instead of vec4 
void main() 
{ 
    gl_Position = vec4 (vPosition, 1.0); 
}