1

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

谢谢

4

1 回答 1

1

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

您要做的是在着色器中声明一个名为“颜色”(或类似名称)的制服,像通常使用任何着色器制服一样设置该制服,并在写入像素之前将您的片段颜色与该制服相乘。

于 2012-08-03T21:09:52.173 回答