OpenGL ES 3.0 полуплаващи (R16F) текстури

Може ли някой да ми отговори откъде идва този ред:

GLES30.glTexImage2D(GLES30.GL_TEXTURE_2D, 0,  GLES30.GL_R16F, width, height, 0,  GLES30.GL_RED, GLES30.GL_HALF_FLOAT, myBuffer);

работи на tegra4, но не работи на ARM Mali-T628 MP6?

Между другото, не прикачвам това към фреймбуфер, използвам това като текстура само за четене. Кодът, върнат от ARM, е 1280, където Tegra изобщо „не се оплаква“.

Освен това знам, че Tegra4 има разширение за половин плаващи текстури и този специфичен Mali няма това разширение, но тъй като е OpenGL ES 3.0, не трябва ли да поддържа такива текстури?


person user1577566    schedule 16.12.2014    source източник


Отговори (1)


Това обаждане изглежда напълно валидно за мен. Грешка 1280 е GL_INVALID_ENUM, което предполага, че един от 3-те аргумента на типа enum е невалиден. Но всеки един сам по себе си, както и комбинацията от тях, е съвместим със спецификациите.

Най-вероятното обяснение е грешка в драйвера. Открих, че няколко драйвера на ES 3.0 имат множество проблеми, така че не е голяма изненада да откриете проблеми.


Разделът по-долу е написан при предположението, че текстурата ще се използва като цел за изобразяване (FBO прикачен файл). Моля, игнорирайте, ако търсите директен отговор на въпроса.


GL_R16F не подлежи на цветопредаване в стандарт ES 3.0.

Ако изтеглите спецификационния документ, който може да бъде намерен на www.khronos.org (директна връзка), таблица 3.13 на страници 130-132 изброява всички текстурни формати и техните свойства. R16F няма отметка в колоната „Color-renderable“, което означава, че не може да се използва като цел за изобразяване.

Съответно, R16F също е посочен под „Цветови формати само за текстура“ в раздел „Необходими текстурни формати“ на страници 129-130.

Това означава, че устройството се нуждае от разширението EXT_color_buffer_half_float, за да поддържа изобразяване на R16F. Това все още е така и в ES 3.1.

person Reto Koradi    schedule 16.12.2014
comment
Написах, че не прикачвам това към фреймбуфер, не използвам това като цел за изобразяване. Искам да използвам това като LUT текстура само за четене. - person user1577566; 16.12.2014
comment
Добре, редактирах отговора, за да го спася възможно най-добре. Извинения за първоначалното недоразумение. - person Reto Koradi; 17.12.2014