gpt4 book ai didi

opengl - 顶点着色器和片段着色器中的 gl_Color 和 gl_FrontColor 之间的关系是什么

转载 作者:行者123 更新时间:2023-12-02 08:53:23 24 4
gpt4 key购买 nike

我有直通顶点和片段着色器。

顶点着色器

void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

片段着色器

void main(void)
{
gl_FragColor = gl_Color;
}

它们会产生空渲染(黑色而不是像 glClearBuffer 那样的背景色)。

如果我修改顶点着色器以将 gl_FrontColor 设置为 gl_Color,它会渲染未触及的 OpenGL 缓冲区...这是直通着色器的预期行为。

void main(void)
{
gl_FrontColor = gl_Color; //Added line
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

我很困惑,如何设置顶点着色器中的 gl_FrontColor 可以更改片段一中的 gl_Color 的值?我缺少什么?

最佳答案

gl_Color在不同的地方有不同的含义。

在顶点着色器中,gl_Color 表示用户传递的主要每顶点颜色属性。这是使用 glColor* 调用或由 glColorPointer 获取的数组数据来设置的。

在片段着色器中,gl_Color 表示正在渲染的三角形面的插值颜色。请记住,三角形有正面和背面。如果启用面剔除,则不会渲染一种或另一种(或两者)的所有面。但是,如果关闭面剔除,则两侧都会被渲染。

根据三角形的特定面具有不同的每个顶点输出值通常很有用。原色具有正面颜色和背面颜色,代表正面三角形和背面三角形的颜色。这些的顶点着色器输出是 gl_FrontColorgl_BackColor

如果您正在进行双面渲染,则需要设置这两个值,以便片段着色器的 gl_Color 输入具有任何含义。如果你只做正面渲染,那么你只需要设置gl_FrontColor即可。

关于opengl - 顶点着色器和片段着色器中的 gl_Color 和 gl_FrontColor 之间的关系是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430154/

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