是否有可能使用GLSL顶点着色器程序来设置一个顶点的颜色,以相同的方式,GL_POSITION改变顶点的位置?

有帮助吗?

解决方案

有关的GLSL先前版本1.30的版本,你要写信给gl_FrontColorgl_BackColor内置插件,这是varyings在顶点着色器访问。阅读关于在GLSL 1.10规范( HTTP varyings:// WWW .opengl.org /注册表/ DOC / GLSLangSpec.Full.1.10.59.pdf )更多地了解它们或GL_ARB_vertex_shader扩展规范。

gl_FrontColorgl_BackColor内搭正火浮点标量4D RGBA矢量。

不过,这将设置的所有的顶点为红色,而不仅仅是一个顶点。这是因为相同的顶点着色器运行的所有顶点。如果要设置单独的颜色,与glColorPointerglDrawArraysglDrawElementsglDrawRangeElements使用glMultiDrawElements在一起。顶点颜色由glColorPointer设定可以理解为在顶点着色器gl_Colorgl_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();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top