2014-08-24 3 views
0

Есть ли разница между указанными выше, поскольку оба они имеют одинаковый эффект, мое предположение заключается в том, что метод буфера un-map более оптимизирован для un-отображения, а не привязки буфер от 0 до un-mapglUnmapBuffer (GL_ARRAY_BUFFER) vs glBindBuffer (GL_ARRAY_BUFFER, 0)

ответ

3

Есть ли разница между выше, поскольку они оба по-видимому, имеют тот же эффект,

Там не просто какая-то разница между ними, они делают совершенно разные вещи.

  • glBindBuffer не принимает/выбирает, к какому буферному объекту относятся следующие операции OpenGL.

  • glUnmapBuffer является дополнением к glMapBuffer. glMapBuffer отображает буфер в адресное пространство хоста, то есть после сопоставления буфера его содержимое доступно через указатель. glUnmapBuffer освобождает это сопоставление, то есть содержимое буфера исчезает из адресного пространства хост-процесса.

Поскольку оба функциональных ортогонально связывание состояния не имеет никакого влияния на адрес пространственных отображений, а адресное пространство отображение не оказывает никакого влияния на связывание состояния.

2

Нет, они не имеют такого же эффекта. Буфер привязки 0 просто отталкивает буфер от какой-либо привязывающей цели, он не отменяет его. Отображение буфера сохраняется и может быть использовано. Вы также можете одновременно отображать несколько буферов. glUnmapBuffer() просто удаляет буфер, который привязан к целевой точке.

Смежные вопросы