2012-05-20 94 views
3

我想通过glReadPixels使用 GL_FLOAT纹理来获取值。Android OpenGL ES 2.0:可以将GL_FLOAT纹理作为COLOR附件分配给FBO吗?

我的Android设备支持 OES_texture_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. 

如果任何人有一些了解我会ppreciate它。

回答

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

+1

你能给我们这个事实的任何证据? – geek

+1

谢谢你的回答! “看看GL_OES_texture_float”是指写在关于khronos的GL_OES_texture_float的文本中? –

+0

我已经扩展我的答案并添加了一些链接。 –