OpenGL 着色器 : don't interpolate color

标签 opengl graphics glsl

我正在尝试一个非常基本的 OpenGL 示例:渲染单个三角形。三角形有三个点和三种不同的颜色。

现在 OpenGL 将这些颜色混合在一起以创建类似渐变的效果。我想关闭它,但不知道该怎么做。

这是我的片段着色器,它非常基础:

#version 150

in vec4 color;
out vec4 outColor;

void main()
{
    outColor = color;
}

最佳答案

有两个选项,您选择哪个将更多地取决于您在做什么。

首先,在将多边形提供给 OpenGL 时,您可以简单地使多边形的每个顶点的颜色保持不变。

其次,您还可以将变量标记为flat:

flat in vec4 color;

它将从激发顶点获取颜色。参见 this man page .

关于OpenGL 着色器 : don't interpolate color,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450996/

相关文章:

c++ - OpenGL体素引擎慢

opengl - 这个 OpenGL Haskell 代码是如何工作的?

opengl - 使用多个 openGL VBO 绘制多个模型

c++ - QPainter 和 QOpenGLWidget 类中的 OpenGL native 代码

无法将 BMP 图像放入矩形 OpenGL

opengl-es - WebGL 中的 AlphaFunctions?

Java图形(画线)

.net - 你能得到剪切控件的可见区域的大小吗?

c++ - glUseProgram() 和速度之后 uniform 的行为

opengl-es - WebGL 与同一图形堆栈上的 OpenGL 预处理器不同