OpenGL绘图过程中的操作无效。是什么原因造成的?

OpenGL绘图过程中的操作无效。是什么原因造成的?,opengl,rendering,Opengl,Rendering,我写了这个代码 void _3DGraphic::Render(){ glBindVertexArray(uiVAO[0]); int HModelView = glGetUniformLocation(m_pShaderProgram->GetProgramID(), "gModelView"); int HProjection = glGetUniformLocation(m_pShaderProgram->GetProgramID(), "gProjection"); glm:

我写了这个代码

void _3DGraphic::Render(){
glBindVertexArray(uiVAO[0]);
int HModelView = glGetUniformLocation(m_pShaderProgram->GetProgramID(), "gModelView");
int HProjection = glGetUniformLocation(m_pShaderProgram->GetProgramID(), "gProjection");
glm::mat4 projection = glm::perspective(45.0f, 1.0f, 0.001f, 1000.0f);
glUniformMatrix2fv(HProjection, 1, GL_FALSE, &projection[0][0]);

glm::mat4 mModelView = glm::lookAt(glm::vec3(0, 30,-10.0f ), glm::vec3(0.0f), glm::vec3(0.0f, 1.0f, 0.0f));


mModelView = glm::rotate(0.1f, glm::vec3(0.0f, 1.0f, 0.0f));

glUniformMatrix4fv(HModelView, 1, GL_FALSE, &mModelView[0][0]);


glDrawArrays(GL_TRIANGLES, 0, 12);
}

并在运行OGL时收到“无效操作”错误。是什么原因造成的

编辑:
在这些OpenGL调用中,似乎都给出了错误。我检查了在“无效操作”错误之前,gl错误还返回了一些“无效枚举器”错误。

在其他lg调用之间调用glGetError(),看看它在哪里返回非零的内容,如Ratchet Freak先生所说,使用glGetError或逐步检查调试器中的代码,以查明有问题的代码。
glUniformMatrix2fv()
对投影矩阵的调用显然是错误的。应该是
glUniformMatrix4fv()
。但我不认为这会导致无效的手术。这将导致糟糕的渲染,或可能导致崩溃。