glColor4f使用GLKTextureLoader阻止纹理加载

时间:2012-08-03 19:45:36

标签: objective-c ios5 opengl-es-2.0 glkit glktextureloader

我目前正在新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中并呈现为白色(即使我正在尝试将其着色为红色)。

由于

1 个答案:

答案 0 :(得分:1)

glColor4f不是OpenGLES2.0命令(来自GLES1.1)

你想要做的是在你的着色器中声明一个名为'color'(或类似的东西)的制服,像往常一样使用任何着色器均匀设置均匀,并在写入像素之前将片段颜色与该制服相乘。