void main(void)
{
vec4 clipCoord = glModelViewProjectionmatrix * gl_Vertex;
gl_Position = clipCoord;
gl_FrontColor = gl_Color;
vec3 ndc = clipCoord.xyz/clipCoord.w;
Vì vậy, clipCoord
chỉ thực hiện các biến đổi đường ống cố định tiêu chuẩn. Tại sao tôi chia cho w
và tôi nhận được gì từ điều này?Trong trình đổ bóng đỉnh OpenGL, w là gì và tại sao tôi chia nó?
tại sao avlue này từng được không 1? – anon
@anon: trong ngắn hạn, bởi vì ma trận chiếu thay đổi giá trị của nó. Nhìn vào Phụ lục Luca đang chỉ vào, ở phần dưới cùng. một phép chiếu điển hình làm w_out = -z_in. Đó là lý do tại sao mọi người đôi khi gọi đây là "phân chia phối cảnh". – Bahbar
@anon, từ [chủ đề này] (http://www.opengl.org/discussion_boards/showthread.php/170202-GLSL-Why-is-gl_Vertex-a-vec4) có hai giá trị chung, w = 1 cho một ** điểm ** và w = 0 cho ** vectơ **. – Air