在着色器上看不到引用的统一

时间:2012-11-20 13:41:26

标签: opengl glsl shader

我正在使用openGL。 我有顶点和片段着色器,当彼此使用时工作正常,但是当我添加tesselation着色器时,之前在程序中识别的制服据说在着色器中没有被引用。

这是我不了解的特异性吗?

这是我的.cpp:

program = new Shader("tessVshader.glsl", "tessFshader.glsl", "tessGshader.glsl");
// Removed tesselation specific just to try to compile w/ geo shader
...
program->SetUniform("Modelview", model * view);
program->SetUniform("NormalMatrix", normalMatrix);

这是tessGshader.glsl的第一行:

uniform mat4 Modelview;
uniform mat3 NormalMatrix;
layout(triangles) in;
layout(triangle_strip, max_vertices = 3) out;

这是输出:

Uniform Modelview is not referenced in the shaders.

1 个答案:

答案 0 :(得分:0)

Shader课程是由你写的吗?如果是的话,它的一些代码会有所帮助。 如果正确创建了GL着色器对象,请确保在尝试访问制服之前调用glUseProgram(...)。否则openGL将无法找到它们。 顺便说一句,确保您可以在glsl代码中看到编译/链接时间错误。查看函数glGetInfoLog,如果你还没有使用它。