Цель текстуры с GL_HALF_FLOAT_OES или GL_FLOAT делает фреймбуфер GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT на Galaxy S4 (Android 4.2)

Я реализую конвейер рендеринга HDR в приложении Android с использованием OpenGL ES 2.0, и у меня возникают некоторые проблемы с текстурами с плавающей запятой, ни 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 оно все равно не работает.

Спасибо!


person Johan    schedule 29.07.2013    source источник
comment
Вы пробовали текстуру RGBA или текстуру RGB? Я обнаружил, что Adreno 320 не любит RGB16F (несмотря на то, что оба являются стандартными в GLES3), поэтому работает только RGBA16F: |   -  person RelativeGames    schedule 29.09.2013
comment
Да, я это сделал, поэтому, когда вы используете RGBA16F, то есть с контекстом OpenGL ES 3.0? В таком случае, сладко, я просто обновлюсь до Android 4.3 :)   -  person Johan    schedule 01.10.2013
comment
Я думал, что у вас может быть S4 с PowerVR, но да, это на GLES3 и Nexus 4.   -  person RelativeGames    schedule 01.10.2013


Ответы (1)


Вы уверены, что расширение GL_EXT_color_buffer_half_float доступно на вашем устройстве?

Согласно этот вопрос на форумах Imagination, S4 поддерживает расширение, но его нельзя использовать.

[..] GL_OES_texture_float позволяет приложению использовать текстуры с плавающей запятой. Вам понадобится дополнительное расширение для рендеринга в целевую точку с плавающей запятой (например, EXT_color_buffer_half_float). К сожалению, это расширение не поддерживается в PowerVR Galaxy S 4.

person user1906    schedule 31.07.2013
comment
Он есть в списке, это странно, но если это так, то в этом есть смысл .. - person Johan; 01.08.2013
comment
У меня нет S4, но если это расширение включено в строку, возвращаемую glGetString (GL_EXTENSIONS), оно должно работать. Может быть, спросив Imagination прямо на их форумах, вы узнаете об этом. - person user1906; 02.08.2013