I have this shader code (GLSL):
#version 420
in vec4 vertex;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
void main()
{
gl_Position = modelViewMatrix * projectionMatrix * vertex;
}
如果我不设置modelViewMatrix和projectionMatrix,程序可以正常运行。但如果我这么做了,当我尝试绘制时,OpenGL会抛出Invalid Operation异常。
我使用以下代码来设置矩阵:
glUniformMatrix4fv(location, 1, false, sendArray);
我已经验证“location”和“sendArray”包含正确的数据。这里发生了什么?
编辑:问题似乎出在glUniformMatrix4fv调用中,但我不知道哪里出了问题。
设置“location”的代码如下:
GLint location;
GLint location = glGetUniformLocation(this->programID, uniform.c_str());
if (location == -1)
{
throw ShaderVariableNotFoundException(uniform, this->programID);
}