2
我試圖通過頂點顏色低谷的頂點,幾何和片段着色器:如何通過着色器管道傳遞頂點顏色?
glBegin(GL_POINTS);
glVertex3f(-2.0f, 0.0f, 0.0); glColor3f(0.0,1.0,0.0);
glVertex3f(+2.0f, 0.0f, 0.0); glColor3f(0.0,0.0,1.0);
glEnd();
頂點着色器:
# version 130
varying vec4 colorv;
void main() {
// pass trough:
gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
colorv = gl_Color;
}
幾何着色器:
#version 150
layout(points) in; // origo of cell
layout(points, max_vertices = 1) out;
varying vec4 colorv;
varying vec4 color;
void main (void)
{
for(int i = 0; i < gl_in.length(); ++i)
{
color = colorv;
gl_Position = gl_in[i].gl_Position;
EmitVertex();
EndPrimitive();
}
}
片段着色器:
# version 130
varying vec4 color;
void main (void)
{
// pass-trough:
gl_FragColor = color;
}
然而,它不工作:-(。兩點都會變成灰色。 我該怎麼做?
調用'glColor()' *之前* glVertex()'你想要它應用。 – genpfault
爲什麼不在所有着色器中使用'#version 150'? – genpfault
@genpfault:1. colorv由頂點着色器寫入2.謝謝!但問題依然存在。 3.當涉及到片段着色器時,我發現使用gl_FragColor更容易(尚未理解如何在版本150中執行此操作)。 – Andy