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" (или что-то подобное), установить эту униформу, как вы это обычно делаете с любой шейдерной униформой, и умножить цвет фрагмента на эту униформу перед записью пикселя.