2015-10-29 2 views
0

Я думал, что вы можете изменить переменную Uniform, а затем использовать этот метод, чтобы получить переменную после рисования, но она не позволяет изменять единое исключение при создании шейдера.OpenGL ES 2.0 изменить переменную шейдера

glGetUniformfv (PROGRAM_INT, UNIFORM_INT, PARAMS, 0);

Я хочу, чтобы шейдер изменял переменную и возвращал эту переменную?

Есть ли способ изменить переменную шейдеров и использовать метод GL для получения этой переменной?

ответ

2

Нет. Единые переменные доступны только для чтения в коде шейдера. Они используются для передачи значений из вашего кода клиента Java/C++ в шейдерный код, а не в другую сторону.

В ES 2.0 единственный способ, с помощью которого я могу получить значения, которые были получены шейдером в клиентский код, - это их преобразование в качестве значений цвета в выводе фрагмента шейдера. Затем они станут частью содержимого фреймбуфера, который вы можете прочитать с помощью glReadPixels().

В новых версиях OpenGL ES, а также в последних версиях полного OpenGL есть дополнительные опции. Например, ES 3.1 вводит Shader Storage Buffers, которые также доступны в OpenGL 4.3 и более поздних версиях. Они позволяют шейдерам записывать значения в буферы, которые вы могли бы прочитать из клиентского кода.

+0

спасибо, по крайней мере, я знаю сейчас – Xjasz

Смежные вопросы