Trong chương trình OpenGL đơn giản chào thế giới, đơn giản vẽ một hình tam giác tĩnh trên cửa sổ, khi tôi đặt 3 đỉnh của tam giác thành màu đỏ, xanh lá cây và xanh dương, hình tam giác được tô đầy gradient.Làm cách nào để trình đổ bóng vertex chuyển thông tin màu vào trình đổ bóng phân đoạn?
Nhưng khi tôi sử dụng bóng đổ như thế này:
Vertex Shader:
attribute vec4 aVertex;
attribute vec4 aColor;
varying vec4 vColor;
void main(void) {
gl_Position = gl_ModelViewMatrix * gl_ProjectionMatrix * aVertex;
vColor = aColor;
}
nơi các thuộc tính aVertex
và aColor
xuất phát từ một bộ đệm đỉnh, trải qua một cuộc gọi của glVertexAttribPointer
.
Fragment Shader:
varying vec4 vColor;
void main(void) {
gl_FragColor = vColor;
}
Các tam giác vẫn còn đầy gradient, và ở đây có các câu hỏi:
Nếu đỉnh-shader được tính cho mỗi đỉnh, sau đó mỗi thể hiện của vColor
nên được gán với màu của một đỉnh. Và màu đỉnh phải là màu đỏ, xanh lục hoặc xanh dương, như được đặt trong bộ đệm đỉnh.
Vậy độ dốc đến từ đâu?
Hoặc, nói cách khác, khi nào nó xảy ra trong trình đổ bóng, thì vColor
hóa ra là màu nội suy thay vì đỉnh?
Dưới đây là thông tin thêm về các trường hợp thay đổi trên các giá trị vec hoặc mat: https: //gamedev.stackexchange.com/questions/139720/glsl-biến đổi-nội suy-thành phần-khôn ngoan-tham khảo-in-the-spec – trusktr