Android OpenGL ES 2.0:GL_FLOAT纹理可以作为COLOR附件分配给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.
如果有人有一些见解我会贬低它。
未扩展的OpenGL ES 2.0不允许这种类型的FBO,但是有一些扩展(和一些移动GPU)支持浮点缓冲区。 看一下GL_OES_texture_float和GL_NV_fbo_color_attachments 。
nVidia Tegra 3支持浮点FBO。
PS使用Tegra 2似乎也有可能: http : //forums.developer.nvidia.com/devforum/discussion/1576/tegra-2-slow-floating-point-texture-operations/p1