iPhone上的屏幕外FBO

问题描述:

我正在使用iPhone 4,iOS 6.0.1。我正在创建一个与主FBO尺寸不同的屏外FBO。我使用下面的代码要做到这一点,在cxFBO和cyFBO是主要FBO大小的两倍:iPhone上的屏幕外FBO

glGenRenderbuffers(1, &_colorRenderBuffer); 
glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffer); 
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, cxFBO, cyFBO); 

glGenFramebuffers(1, &_frameBufferID); 
glBindFramebuffer(GL_FRAMEBUFFER, _frameBufferID); 
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, _colorRenderBuffer); 

glGenTextures(1, &_fboTextureID); 
glBindTexture(GL_TEXTURE_2D, _fboTextureID); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, cxFBO, cyFBO, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); 
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _fboTextureID, 0); 

然后我打电话glBindFramebuffer(GL_FRAMEBUFFER, _frameBufferID)后绘制它。我不想用着色器发布整个绘图程序。我想我没有做任何特别的事情,但如果你认为这很重要,我会举一个简短的例子。问题是只有四分之一的纹理填充了顶点,其他三个四分之一是由glClearColor()设置的颜色。

我在做什么错?我对格式有些困惑,例如GL_RGBA。我应该使用GL_RGBA_OES吗?到处?

问题是我忘了调用glViewPort()。如果你仔细想想,那种很明显;-)