gpt4 book ai didi

opengl - 更改顶点着色器中顶点的颜色

转载 作者:行者123 更新时间:2023-12-02 04:40:09 25 4
gpt4 key购买 nike

是否可以使用 GLSL 顶点着色器程序设置单个顶点的颜色,就像 gl_Position 更改顶点位置一样?

最佳答案

对于 GLSL 1.30 之前的版本,您需要写入 gl_FrontColorgl_BackColor 内置函数,这些函数可在顶点着色器中进行访问。阅读 GLSL 1.10 规范 ( http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.10.59.pdf ) 中的变化以了解有关它们的更多信息,或阅读 GL_ARB_vertex_shader 扩展规范。

gl_FrontColorgl_BackColor 是采用归一化浮点标量的 4D RGBA 向量。

但这会将所有顶点设置为红色,而不仅仅是一个顶点。这是因为对所有顶点运行相同的顶点着色器。如果要设置单独的颜色,请将 glColorPointerglDrawArraysglDrawElementsglDrawRangeElementsglMultiDrawElements 一起使用。由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;
}

此外,要使顶点着色器像 OpenGL 固定功能管道一样设置变量,请调用函数 ftransform()。

void main()
{
ftransform();
}

关于opengl - 更改顶点着色器中顶点的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com