使用GL_HALF_FLOAT_OES或GL_FLOAT的纹理目标在Galaxy S4(Android 4.2)上进行帧缓冲GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

时间:2013-07-29 13:21:53

标签: android opengl-es opengl-es-2.0 android-4.2-jelly-bean

我正在使用OpenGL ES 2.0在Android应用中实现HDR渲染管道,我遇到浮点纹理问题,GL_FLOAT或GL_HALF_FLOAT_OES都不能用作纹理类型,因为这样会在纹理时给出GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT用作帧缓冲目标。

如果我将类型设置为GL_UNSIGNED_BYTE,则代码可以正常工作,因此它实际上只是引起它的浮点问题。

设备支持扩展GL_OES_texture_float,GL_OES_texture_half_float,GL_EXT_color_buffer_float和GL_EXT_color_buffer_half_float。

我正在使用GL_NEAREST作为GL_TEXTURE_MAG_FILTER / GL_TEXTURE_MIN_FILTER,但设备确实支持GL_OES_texture_half_float_linear,因此GL_LINEAR也可以正常工作。

该设备支持npot纹理,但即使功率为2,它仍然会失败。

谢谢!

1 个答案:

答案 0 :(得分:1)

您确定扩展程序GL_EXT_color_buffer_half_float已在您的设备中公开吗?

根据Imagination论坛的this question,S4支持扩展但不能使用。

  

[..] GL_OES_texture_float允许应用程序使用浮点纹理。您需要一个额外的扩展来渲染浮点目标(例如EXT_color_buffer_half_float)。不幸的是,这个扩展没有暴露在PowerVR Galaxy S 4上。