我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)
混合功能的两个三角形(四边形)上。我不使用深度缓冲区(在所有情况下)。
有人可以告诉我可能是什么问题吗?