我有这个着色器代码(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);
}