Можете ли вы использовать несколько целей с одним VBO?

Пример кода:

1. glGenBuffers(1, &VboId);
2. glBindBuffer(GL_ARRAY_BUFFER, VboId);
3. glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
4. glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);

Итак, мы создаем универсальный дескриптор VBO, а затем связываем его с помощью "GL_ARRAY_BUFFER". Связывание, по-видимому, имеет 2 цели:

  1. Мы должны привязать буфер, прежде чем мы сможем скопировать данные в графический процессор через glBufferData
  2. Мы должны привязать буфер, прежде чем мы сможем добавить атрибуты к нему через glVertexAttribPointer

И я думаю, что это единственные 2 раза, когда вам нужно связать VBO. Мой вопрос заключается в том, есть ли какой-либо сценарий, в котором цель (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER или GL_PIXEL_UNPACK_BUFFER) будет отличаться в строках 2 и 3? Или мы хотели бы перепривязать его к другой цели перед строкой 4?

Можем ли мы привязать несколько целевых объектов буфера к одному VBO?

6
задан iammilind 28 October 2012 в 06:34
поделиться