题
是否有可能使用GLSL顶点着色器程序来设置一个顶点的颜色,以相同的方式,GL_POSITION改变顶点的位置?
解决方案
有关的GLSL先前版本1.30的版本,你要写信给gl_FrontColor
或gl_BackColor
内置插件,这是varyings在顶点着色器访问。阅读关于在GLSL 1.10规范( HTTP varyings:// WWW .opengl.org /注册表/ DOC / GLSLangSpec.Full.1.10.59.pdf )更多地了解它们或GL_ARB_vertex_shader扩展规范。
和gl_FrontColor
是gl_BackColor
内搭正火浮点标量4D RGBA矢量。
不过,这将设置的所有的顶点为红色,而不仅仅是一个顶点。这是因为相同的顶点着色器运行的所有顶点。如果要设置单独的颜色,与glColorPointer
,glDrawArrays
,glDrawElements
或glDrawRangeElements
使用glMultiDrawElements
在一起。顶点颜色由glColorPointer
设定可以理解为在顶点着色器gl_Color
。 gl_Color
在顶点着色器是每顶点属性。
要读你的顶点着色器写的颜色,在片段着色器,读取内置不同gl_Color
。成品片段应写入gl_FragColor
。
顶点着色器示例:
void main()
{
gl_FrontColor = gl_Color;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
片段着色器示例:
void main()
{
gl_FragColor = gl_Color;
}
另外,为了使顶点着色器设置varyings就像OpenGL的固定功能管线,调用函数ftransform()。
void main()
{
ftransform();
}
不隶属于 StackOverflow