texture2D не совместим с вычислительными шейдерами на мобильном телефоне Android?

Я пытаюсь использовать texture2D () для чтения значения из текстуры sampler2d в вычислительном шейдере. На ПК он работает нормально, но на мобильном устройстве Android (с использованием версии 310 es) компиляция того же кода не выполняется со следующей ошибкой:

'texture2D' : type is for Vulkan api only  

Разве этот вызов как-то не совместим с вычислительными шейдерами?


person markwalberg    schedule 10.05.2016    source источник


Ответы (1)


Из вашего вопроса не на 100% ясно, какой инструмент вы используете для компиляции шейдеров или компилируете ли вы во время выполнения ?. texture2D был исключен для выборки в шейдерах OpenGL (ES).

Для Vulkan (как говорится в сообщении) существует «texture2D», который используется для чтения из текстуры, отделенной от сэмплера (подробности см. В https://www.khronos.org/registry/vulkan/specs/misc/GL_KHR_vulkan_glsl.txt).

Для OpenGL ES 2.x (и выше) вы должны использовать sampler2D (или sampler2DShadow) для выборки из текстуры или image2D для чтения и записи в вычислительном шейдере.

person Sascha Willems    schedule 10.05.2016
comment
Я компилирую их во время выполнения. - person markwalberg; 10.05.2016
comment
Как упоминалось выше, не используйте texture2D, поскольку он доступен только на Vulkan, где изображения отделены от сэмплеров. Если вы хотите читать и / или записывать данные изображения в вычислительном шейдере, используйте вместо этого image2D. - person Sascha Willems; 11.05.2016