当我在顶点着色器中有“out”时,OpenGL不会绘制

问题描述 投票:0回答:2

我有一个顶点着色器和一个片段着色器。我将缓冲区中的颜色变量发送到顶点着色器,然后尝试将其传递给片段着色器。当我的代码中有out vec4 out_color时,不会绘制。我的代码是

"in vec4 in_position;\n"
"in vec4 in_color;\n"
"out vec4 out_color;"
"void\nmain()\n"
"{\n"
"  gl_Position = in_position;\n"
"out_color = in_color;"
"}\n\n";

任何人都可以对此有所了解吗?

c++ visual-c++ opengl glsl
2个回答
1
投票

在着色器字符串中声明out_color后,您忘记了换行符。所以它与void main()在同一条线上(你也有一个换行符,但这可能不是问题)。

为了清楚起见,我建议你总是对一行使用一个子字符串,并且总是在每个子字符串的末尾包含一个换行符,如果你真的想要使用代码内着色器代码,那么无论如何。

并且您还应该始终检查您的着色器是否正确编译并且程序是否正确链接并查询信息日志以防它们没有。这会很明显地告诉你错误(或者至少会给你一个提示)。


0
投票

事实证明我使用了错误版本的着色语言,您必须在两个着色器的顶部包含代码

#version 140;
© www.soinside.com 2019 - 2024. All rights reserved.