Предполагая, что я хочу рендерить квадрациклы и повторно использовать свою сетку, я хотел бы иметь возможность в одном призыве рисовать много примеров.Буфер текстуры OpenGL - Синтаксис GLSL
Я хотел бы достичь этого с помощью объекта текстурного буфера, поместив матрицы преобразования в буфер.
Я понимаю, как настроить объект буфера текстуры в C++, но я смущен тем, как захватить мои преобразования из этого в GLSL.
uniform samplerBuffer sampler;
...
... = texelFetch(sampler, index);
В приведенном выше коде (в вершинном шейдере) я не уверен, как работает samplerBuffer
ключевое слово (и было много проблем с поиском документации). Я хотел бы знать, какой индекс в буфере текстуры связан с данной вершиной, таким образом может произойти поиск преобразования. Как я могу это сделать, и как выглядит синтаксис GLSL?
Можно предположить, что матрицы преобразования являются матрицами 4х4. Я надеялся сохранить требования к версии OpenGL в диапазоне 2.XX.
Редактировать: Я нашел это: http://www.opengl.org/registry/specs/ARB/draw_instanced.txt. Я могу справиться с ограничением 3.0. Однако я смущаюсь при поиске примеров того, как это использовать. Используя GLEW, я полагаю, что я бы назвал glDrawElementsInstanced, но некоторые места в Интернете говорят, что для этого требуется OpenGL версии 3.3 или новее. Как я могу использовать требования 3.0, которые я связывал?
Вы также можете использовать равномерные буферы, которые гораздо более подходят для загрузки нескольких векторных и матричных блоков. –