glColor4f останавливает загрузку текстур с помощью GLKTextureLoader

В настоящее время я использую OpenGL ES 2.0 под GLKView на новом iPad. Кажется, всякий раз, когда я делаю вызов 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 ответ

Решение

glColor4f не является командой OpenGLES2.0 (это из GLES1.1)

То, что вы хотите сделать, это объявить униформу в вашем шейдере под названием "color" (или что-то подобное), установить эту униформу, как вы это обычно делаете с любой шейдерной униформой, и умножить цвет фрагмента на эту униформу перед записью пикселя.

Другие вопросы по тегам