私はこのシェーダーコード(GLSL)を持っています:
#version 420
in vec4 vertex;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
void main()
{
gl_Position = modelViewMatrix * projectionMatrix * vertex;
}
modelViewMatrixと projectMatrix を設定しないと、エラーなしで実行されます。その場合、描画しようとすると、OpenGL は無効な操作の例外をスローします。
このコードを使用して行列を設定します。
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);
}