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