OpenGL - Vertex Array внутри VBO, а Index & Texture Array снаружи? - PullRequest
2 голосов
/ 16 октября 2011

Можно ли поместить набор вершин в VBO, но взять координаты индекса и текстуры. Массивы из обычной памяти? Если да, какой синтаксис использовать?

1 Ответ

4 голосов
/ 16 октября 2011

Да, это возможно. Но ты не должен.

Причиной использования буферных объектов является повышение производительности. Выполнение того, что вы предлагаете, просто снижает производительность, которую вы получили бы, правильно используя буферные объекты.

Кроме того, это путь к драйверу, который большинство драйверов видят не очень часто. Либо люди используют буферные объекты для данных вершин, либо они используют клиентские массивы памяти. Поскольку дорога проходит меньше, вы, скорее всего, столкнетесь с ошибками водителя.

Синтаксис - это обычный синтаксис. В вызовах gl*Pointer используются объекты буфера или нет, в зависимости от того, связан ли объект буфера с GL_ARRAY_BUFFER во время вызова gl*Pointer . Таким образом, вы можете привязать буфер к GL_ARRAY_BUFFER, сделать вызов gl*Pointer со смещением, затем привязать 0 к GL_ARRAY_BUFFER и выполнить вызов gl*Pointer с фактическим указателем.

Аналогично, вызовы glDraw*Elements* используют объект буфера, если буфер связан с GL_ELEMENT_ARRAY_BUFFER. Поэтому, если вы хотите использовать клиентскую память для этих функций, привяжите 0 к этому.

...