iPhone上OpenGL ES 1.1纹理的疑难解答

iPhone上OpenGL ES 1.1纹理的疑难解答,iphone,opengl-es,textures,Iphone,Opengl Es,Textures,我试图将纹理绘制到屏幕外的帧缓冲区中,其renderbuffer最终总是完全为空(黑色)。奇怪的是,我知道上下文已经设置好了,我正在使用glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES)和glGetError()检查错误,但这两个函数都没有说任何错误。有没有其他我可以调用的错误检查函数可以帮助了解正在发生的事情?如果没有更多信息,很难给出准确的答案。也许您可以发布一些关于渲染缓冲区的设置和使用的代码 同时,以下是有关如何正确设置屏幕外帧缓冲区的一些信息

我试图将纹理绘制到屏幕外的帧缓冲区中,其renderbuffer最终总是完全为空(黑色)。奇怪的是,我知道上下文已经设置好了,我正在使用glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES)和glGetError()检查错误,但这两个函数都没有说任何错误。有没有其他我可以调用的错误检查函数可以帮助了解正在发生的事情?

如果没有更多信息,很难给出准确的答案。也许您可以发布一些关于渲染缓冲区的设置和使用的代码

同时,以下是有关如何正确设置屏幕外帧缓冲区的一些信息:

// Remember the FBO being used for the display framebuffer
glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, (GLint *)&SystemFBO);

// Create the texture and the FBO for offscreen frame buffer
glGenTextures(1, &ResultTexture);
glBindTexture(GL_TEXTURE_2D, ResultTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glGenFramebuffersOES(1, &ResultFBO);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, ResultFBO);
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, ResultTexture, 0);

glBindFramebufferOES(GL_FRAMEBUFFER_OES, ResultFBO);

// do your rendering to offscreen framebuffer
...

// restore original frame buffer object
glBindFramebufferOES(GL_FRAMEBUFFER_OES, SystemFBO);

// use ResultTexture as usual
glBindTexture(GL_TEXTURE_2D, ResultTexture);

希望这有助于……

谢谢。我当时认为问题是某个内部OpenGL错误,glGetError()或glCheckFramebufferStatusOES(GL\u FRAMEBUFFER\u OES)都没有报告,但这只是我误用了OpenGL。我在程序的前一个点调用了glColor4f(0,0,0,0),所以当我绘制纹理时,它的alpha=0。我想这是一个先阅读手册可以节省时间的例子。。。