是否可以使用GLSL顶点着色器程序设置单个顶点的颜色,就像gl_Position更改顶点的位置一样?更改顶点着色器中顶点的颜色
回答
我想我对你的GLSL经验有太多了解。我很抱歉。
对于GLSL之前版本1.30的版本,您想要写入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或glMultiDrawElement一起使用。由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();
}
感谢您的回复。顺便说一句,在顶点着色器中使用gl_FrontColor时,似乎片段着色器的定义(至少使用gl_FragColor = glColor)是强制性的。 – 2010-04-01 12:09:55
err,在片段着色器中设置gl_Position? glColor而不是gl_Color?自行变换,而不设置为gl_Position? – Bahbar 2010-04-02 13:30:52
现在已修复:) – 2010-04-05 23:23:50
- 1. 从顶点着色器
- 2. 顶点着色器问题
- 3. 更改顶点着色器中的浮点数(GLSL)
- 4. 无法将顶点着色器中的颜色传递给片段着色器
- 5. OpenGL - 着色器中的顶点颜色被交换
- 6. graph-tool:如何更改顶点颜色?
- 7. GLSL:顶点着色器无片段着色片段着色器
- 8. THREE.Line中的顶点颜色
- 9. GLSL点燃顶点着色器
- 10. 顶点着色器中的Direct3D11错误顶点转换
- 11. 顶点着色器和原始模型的颜色
- 12. 表面着色器中的统一着色器顶点格式
- 13. C++/OpenGL/SFML顶点着色
- 14. Directx的顶点颜色
- 15. 仅用于某些顶点的顶点着色器
- 16. 在Vulkan中,顶点着色器中顶点的输出颜色与我在片段着色器中获得的颜色不同
- 17. 粒子系统的顶点着色器
- 18. OpenGL:使用顶点着色器添加顶点
- 19. 顶点着色由python-色数X(G)
- 20. C++ OpenGL - 顶点颜色
- 21. 顶点着色器和片段着色器
- 22. GLSL顶点着色器崩溃电脑
- 23. DirectX 11顶点着色器反射
- 24. GLSL顶点着色器gl_Position值
- 25. GLSL顶点着色器编译错误
- 26. OpenglES 2.0顶点着色器属性
- 27. 顶点着色器输入顺序
- 28. 如何乘顶点着色器
- 29. 加载顶点着色器错误
- 30. 顶点颜色正在变成白色
您使用哪种OpenGL版本? *总是*记住解释这一点。 – 2010-03-31 13:26:55
GL_ARB_shading_language_100扩展名 – 2010-03-31 13:30:44
OpenGL版本,不是着色器版本。 – 2010-03-31 15:29:33