2012-03-30 13 views
25

Jestem nowy na OpenGL ES 2.0, i nie może zrozumieć następujące najprostszy shadera:Dlaczego nie vec3 dla OpenGL ES 2.0 gl_Position?

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

moje pytanie, ponieważ pozycja będzie wektorem (x, y, z), dlaczego jest gl_Position vec4 zamiast vec3?

+0

Kilka dobrych wyjaśnień w tym temacie: http://www.gamedev.net/topic/506162-3d-math-4-component-vectors/ – Tim

Odpowiedz

3

Jeśli podasz swoje wierzchołki do modułu cieniującego bezpośrednio klips przestrzeni, można po prostu przejść X, Y, Z i dodać 1 jako składnik wagowo w tym cieniującego .

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