3

我想通过 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.

如果有人有一些见识,我会很感激。

4

1 回答 1

1

未扩展的 OpenGL ES 2.0 不允许这种类型的 FBO,但是有一些扩展(和一些移动 GPU)支持浮点缓冲区。看看GL_OES_texture_floatGL_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

于 2012-05-21T11:53:18.010 回答