У меня проблема с отрисовкой текстуры и закадрового буфера кадра с OpenGLES
на iPhone.
(источник: imagehost.org)
(источник: imagehost.org)
Первое изображение показывает плитки маджонга, отрендеренные непосредственно в CAEAGLLayer
, и это правильно. Второй показывает тайлы, отрендеренные в закадровый буфер кадра, скопированные в текстуру с использованием glCopyTexImage2D
и текстуру, отрендеренную в CAEAGLLayer
. Оба используют белый непрозрачный четырехугольник в качестве фона. Я также пробовал рендерить непосредственно в текстуру, но эффект был таким же, как и с закадровым буфером кадра.
Мой код для создания фреймбуфера:
GLuint framebuffer;
glGenFramebuffersOES(1, &framebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);
GLuint renderbuffer;
glGenRenderbuffersOES(1, &renderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGB8_OES,
512, 512);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES,
GL_RENDERBUFFER_OES, renderbuffer);
Я рисую все плитки из атласа текстуры одним вызовом glDrawElements
, используя VBO для передачи данных чересстрочных вершин (координаты, координаты текстуры, цвет). Я использую формат текстуры RGBA8888, рисуя каждое изображение на двух треугольниках (четырехугольниках) с функцией смешивания glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
. Я не использую буфер глубины (во всех случаях).
Может кто подскажет, в чем может быть проблема?