当我使用以下代码创建多个渲染目标并使用纹理格式GL_RGBA8
和GL_UNSIGNED_BYTE
作为我的数据类型的framebuffer进行绑定时,我没有遇到任何错误。
但是当我使用纹理格式GL_RGBA32F
和GL_FLOAT
做同样的事情作为我的数据类型时,我面临以下运行时错误
gl error from openglrenderer 0x502 invalid operation framebuffertexture2d
代码如下:
GLuint mFBO = 0;
glGenFramebuffers(1, &mFBO);
glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
GLuint mTexColor;
glGenTextures(1, &mTexColor);
glBindTexture(GL_TEXTURE_2D, mTexColor);
glTexImage2D(GL_TEXTURE_2D,0, GL_RGBA32F, 320, 240, 0, GL_RGBA, GL_FLOAT, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, mTexColor, 0);
GLenum buffers[] = { GL_COLOR_ATTACHMENT0}; glDrawBuffers(1, buffers);