我目前正在新iPad上使用GLKView下的OpenGL ES 2.0。看来,每当我调用glColor4f时,没有任何反应(即它没有为我想要的多边形着色),除了导致GL_INVALID_OPERATION错误。然后,一旦我尝试加载纹理,我收到此错误消息:
Error loading file: The operation couldn't be completed. (GLKTextureLoaderErrorDomain error 8.)
但在调用glColor4f之前,一切正常。这是我在下面的drawInRect代码:
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// Render the object with GLKit
self.effect.texture2d0.enabled = NO;
self.effect.transform.modelviewMatrix = _defaultModelMatrix;
[self.effect prepareToDraw];
// Render the grid
glBindBuffer(GL_ARRAY_BUFFER, _gridVertexBuffer);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, 0, 0);
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glDrawArrays(GL_TRIANGLES, 0, TRIANGLES * 6);
glDisableVertexAttribArray(GLKVertexAttribPosition);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
如果有人可以提供帮助,我真的很感激。有些事情需要指出。我正在尝试着色的对象存储在VBO中并呈现为白色(即使我正在尝试将其着色为红色)。
由于
答案 0 :(得分:1)
glColor4f不是OpenGLES2.0命令(来自GLES1.1)
你想要做的是在你的着色器中声明一个名为'color'(或类似的东西)的制服,像往常一样使用任何着色器均匀设置均匀,并在写入像素之前将片段颜色与该制服相乘。