Android OpenGL ES 2.0:GL_FLOAT纹理可以作为COLOR附件分配给FBO吗?

时间:2012-05-20 17:12:02

标签: c++ c android-ndk opengl-es-2.0 fbo

我想通过glReadPixels使用 GL_FLOAT纹理获取值。

我的Android设备支持 OES_texture_float 。但是,附加 GL_FLOAT 纹理会出错。

在Android中的OpenGL ES 2.0中,将 GL_FLOAT 纹理附加到FBO是不可能的?还是依靠硬件?

我的部分代码是:

初​​始化:

glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D,texture);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,texWidth,texHeight,0,GL_RGB,GL_FLOAT,NULL);

FBO附件:

glBindFramebuffer(GL_FRAMEBUFFER,framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,texture,0);
checkGlError("FBO Settings");
// glGetError() return 0x502.
status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
// glCheckFramebufferStatus() return 0.

如果有人有一些见解,我会贬低它。

1 个答案:

答案 0 :(得分:1)

未扩展的OpenGL ES 2.0不允许这种类型的FBO,但是有一些扩展(和一些移动GPU)支持浮点缓冲区。请查看GL_OES_texture_floatGL_NV_fbo_color_attachments

nVidia Tegra 3支持浮点FBO。

P.S。使用Tegra 2,似乎也可以:http://forums.developer.nvidia.com/devforum/discussion/1576/tegra-2-slow-floating-point-texture-operations/p1