2012-03-30 56 views
25

Tôi mới để OpenGL ES 2.0, và không thể hiểu được đổ bóng đơn giản sau đây:Tại sao không phải vec3 cho OpenGL ES 2.0 gl_Position?

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

Câu hỏi của tôi là, kể từ một vị trí sẽ là một vector của (x, y, z), tại sao là gl_Position một vec4 thay vì vec3?

+0

Một số giải thích tốt trong chuỗi này: http://www.gamedev.net/topic/506162-3d-math-4-component-vectors/ – Tim

Trả lời

3

Nếu bạn cung cấp đỉnh của bạn để đổ bóng trực tiếp trong không gian clip, bạn chỉ có thể vượt qua x, y, z và thêm 1 như là thành phần w trong shader mà .

attribute vec3 vPosition; // vec3 instead of vec4 
void main() 
{ 
    gl_Position = vec4 (vPosition, 1.0); 
} 
Các vấn đề liên quan