Да, это возможно. Но ты не должен.
Причиной использования буферных объектов является повышение производительности. Выполнение того, что вы предлагаете, просто снижает производительность, которую вы получили бы, правильно используя буферные объекты.
Кроме того, это путь к драйверу, который большинство драйверов видят не очень часто. Либо люди используют буферные объекты для данных вершин, либо они используют клиентские массивы памяти. Поскольку дорога проходит меньше, вы, скорее всего, столкнетесь с ошибками водителя.
Синтаксис - это обычный синтаксис. В вызовах 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 к этому.