gpt4 book ai didi

c++ - opengl顶点颜色插值

转载 作者:行者123 更新时间:2023-11-30 04:07:31 34 4
gpt4 key购买 nike

我刚刚开始使用 opengl 学习图形,几乎没有掌握着色器等概念。按照一组教程,我在屏幕上绘制了一个三角形,并为每个顶点分配了一个颜色属性。

我使用顶点着色器将颜色值转发给片段着色器,然后片段着色器简单地将顶点颜色分配给片段。

顶点着色器:

[.....]

layout(location = 1) in vec3 vertexColor;
out vec3 fragmentColor;

void main(){
[.....]
fragmentColor = vertexColor;

}

片段着色器:

[.....]

out vec3 color;

in vec3 fragmentColor;

void main()
{

color = fragmentColor;

}

所以我为三角形的每个顶点分配了不同的颜色。结果是平滑插值的彩色三角形。

我的问题是:由于我将特定颜色发送到片段着色器,平滑插值发生在哪里?它是opengl中默认启用的状态吗?这个状态还有哪些其他值,我如何在它们之间切换?我希望使用片段着色器完全控制像素颜色,但似乎在幕后进行的计算会改变结果。显然有些事情我不明白,任何人都可以帮助解决这个问题吗?

最佳答案

在 OpenGL 管道中,在顶点着色阶段(顶点、曲面 segmentation 和几何着色)和片段着色之间,是光栅化器。它的工作是确定哪些屏幕位置被特定的几何图形(点、线或三角形)覆盖。知道这些位置以及输入顶点数据后,光栅化器会线性插值片段着色器中每个可变变量的数据值,并将这些值作为输入发送到片段着色器中。当应用于颜色值时,这称为高氏着色。

来源:OpenGL 编程指南,第八版。

如果您想看看没有插值会发生什么,请在绘制之前调用 glShadeModel(GL_FLAT)。默认值为 GL_SMOOTH。

关于c++ - opengl顶点颜色插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445925/

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