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)。我不想用着色器发布整个绘图程序。我认为我没有做任何特别的事情,但是如果您认为这很重要,我将发布一个简短的示例。问题是只有四分之一的纹理被顶点填充,其他 3 个四分之一是由glClearColor().

我究竟做错了什么?我对格式特别有点困惑,即GL_RGBA. 我应该使用GL_RGBA_OES吗?到处?

4

1 回答 1

0

问题是我忘记调用 glViewPort()。如果您考虑一下,这很明显;-)

于 2012-12-09T19:58:48.393 回答