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

拡張されていないOpenGLES2.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 に答える