iPhone上的屏幕外FBO

时间:2012-12-09 19:04:08

标签: iphone opengl-es opengl-es-2.0

我正在开发iPhone 4,iOS 6.0.1。我正在创建一个不同于主要FBO的屏幕外FBO。我使用以下代码来执行此操作,其中cxFBO和cyFBO的大小是主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吗?到处?

1 个答案:

答案 0 :(得分:0)

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