Fra*_*ger 4 opengl glsl vertex-shader
是否可以使用GLSL顶点着色器程序设置单个顶点的颜色,就像gl_Position改变顶点的位置一样?
小智 9
对于GLSL早期版本1.30的版本,您希望写入gl_FrontColor或gl_BackColor内置函数,这些函数可以在顶点着色器中访问.阅读GLSL 1.10规范(http://www.opengl.org/registry/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;
}
Run Code Online (Sandbox Code Playgroud)
片段着色器示例:
void main()
{
gl_FragColor = gl_Color;
}
Run Code Online (Sandbox Code Playgroud)
另外,要使顶点着色器像OpenGL固定函数管道一样设置变化,请调用函数ftransform().
void main()
{
ftransform();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20857 次 |
| 最近记录: |