Учитывая, что мы используем OpenGL 4.5 или поддерживаем расширение GL_ARB_direct_state_access
, у нас есть новая функция glCreateBuffers
.Разница в glGenBuffers и glCreateBuffers
Этой функция имеет одинаковую подпись glGenBuffers
, но указует:
возвращает
n
ранее неиспользуемые имена буфера вbuffers
, каждый из которых представляет собой новый объект буфера инициализирован, как если бы он был привязан к неустановленным целям
glGenBuffers
имеет следующие характеристики:
Имена объектов буфера, возвращаемые вызовом
glGenBuffers
, не возвращаются последующими вызовами, если только они не были удалены сglDeleteBuffers
.
Таким образом, любое имя буфера, возвращенный glCreateBuffers
никогда не будет использоваться снова сам по себе, но может быть использован glGenBuffers
.
Кажется, что glCreateBuffers
всегда будет создавать новые объекты буфера и возвращать их имена, а glGenBuffers
создаст новые буферы, если нет предыдущих буферов, которые с тех пор были удалены.
В чем преимущество добавления этой функции?
Когда следует использовать glCreateBuffers
над glGenBuffers
?
P.S.
Я думаю, что это стоит для всех glCreate*
функций, добавленных GL_ARB_direct_state_access
Говорят, что «каждый представляет новый буферный объект», другой говорит: «Объекты буфера не связаны с именами возвращаемых имен буфера». Вы говорите: «glGenBuffers будут создавать только новые буферы, если нет предыдущих буферов, которые с тех пор были удалены», но 'glGenBuffers' ** никогда не создадут новые буферы. –
А, так вам никогда не нужно называть 'glBindBuffer', имеет смысл – CoffeeandCode
@BenVoigt сделать ответ человеком, вот и все, что мне нужно. – CoffeeandCode