我想通过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.
如果有人有一些见解,我会贬低它。
答案 0 :(得分:1)
未扩展的OpenGL ES 2.0不允许这种类型的FBO,但是有一些扩展(和一些移动GPU)支持浮点缓冲区。请查看GL_OES_texture_float和GL_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