Я переключился с ненужных атрибутов вершин памяти на UBO, чтобы использовать гораздо меньше памяти. Я хочу создать большой буфер (содержащий более 1024 * 1024 значений), содержащий данные о данной модели. Далее для каждой модели я бы оставил программный и вершинный буфер (так как меш одинаковый) и изменил UBO для следующей модели. Таким образом, каждый UBO будет установлен один раз, и тогда только привязка будет изменена на другой буфер.
Проблема в том, что я не могу создать такой большой массив. Код как это идет хорошо:
layout(std140) uniform someDataUniform {
int someData[1201];
};
но код, подобный этому, вылетает:
layout(std140) uniform heightDataUniform {
int heightData[1201*1201];
};
Есть ли решение этой проблемы? Создание большого связываемого буфера с произвольным доступом по индексу? Возможно 2D массив даже (не обязательно)?
OpenGL 3.3, GLSL 330.
Задача ещё не решена.