glUniform4fv给GL
我试图在iOS和OpenGL ES中开发基本游戏,但是我在制服上遇到了这个问题,下面是将值传递给我的制服的代码:
glBindVertexArrayOES(_vertexArray);
// Render the object with ES2
glUseProgram(self.shaderProgram);
glUniformMatrix4fv(uniformModelViewProjection, 1, 0, modelViewProjectionMatrix.m);
// Get uniform center position
glUniform4fv(uniformCenterPosition, 1, centerPosition.v);
// Get uniform time position
glUniform1f(uniformTime, time);
// Set the sampler texture unit to 0
glUniform1i(uniformTexture, 0);
glDrawArrays(GL_POINTS, 0, numVertices);
请注意,在调用glDrawArrays之前,已经注意将glUniform函数放在glUseProgram前面。 统一的位置看起来也很好,通过跟踪确认。 以下是我在XCode中运行OpenGL ES分析器工具时得到的结果:
它为glUniform4fv返回一个GL_INVALID_OPERATION,注意表示的值似乎是正确的。
以下是我从文档中找到的GL_INVALID_OPERATION错误的可能原因:
他们似乎都没有解释为什么我收到这个错误。 这让我疯狂,请帮忙!
添加我的评论作为答案,因为它原来是解决方案:
从这张名单中我可以想到的唯一原因是第二点和第三点:
因此,确保相应的uniform变量在着色器中被真正声明为vec4
(也许它是vec3
?)。