GL_MAX_VERTEX_UNIFORM_COMPONENTS и размеры компонентов - PullRequest
1 голос
/ 27 января 2020

Насколько я понимаю, glGet() с GL_MAX_VERTEX_UNIFORM_COMPONENTS возвращает максимальное количество доступных однородных компонентов.

Есть ли индикатор, насколько большими могут быть эти компоненты (1 байт? 4 байта?)? Могу ли я обратиться к более чем GL_MAX_VERTEX_UNIFORM_COMPONENTS компонентам, если компоненты используются с низкой точностью?

1 Ответ

1 голос
/ 27 января 2020

Мой вопрос сейчас таков: есть ли показатель, насколько большими могут быть эти компоненты (1 байт? 4 байта?)?

Нет. Компонент - это просто компонент вектора, независимо от типа данных.

Могу ли я обратиться к более чем GL_MAX_VERTEX_UNIFORM_COMPONENTS компонентам, если компоненты используются с низкой точностью?

Нет.

Вы могли бы иметь возможность вручную упаковать несколько элементов данных в компонент, например 4 байта или 2 коротких в одно 32-битное целое число (при условии Ваша реализация поддерживает 32-битные целые числа, реализация OpenGL ES 2.0 не требуется). Современный GLSL также имеет такие функции, как unpackHalf2x16, так что вы можете упаковать два поплавка с половинной точностью в один 32-битный uint компонент.

Другой вариант, который следует рассмотреть (альтернативно или дополнительно к ручному упаковка) Объекты унифицированного буфера , которые позволяют указывать большие объемы унифицированных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...