glBindBuffer - зв'язує іменований буферний об'єкт.

C специфікація

void glBindBuffer (GLenum target, GLuint buffer) ;

Параметри

target - вказує ціль до якої прив'язується об'єктний буфер. Повинен мати одне з наступних значень: GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER або GL_PIXEL_UNPACK_BUFFER. buffer - вказує ім'я об'єктного буфера.

Опис

Функція glBindBuffer дозволяє створювати або використовувати іменовані об'єктні буфери. Викликаючи функцію glBindBuffer з параметром target встановленим у GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER або GL_PIXEL_UNPACK_BUFFER і buffer встановленим у ім'я нового об'єктного буфера, пов'язує ім'я об'єктного буфера до вказаної цілі. Коли об'єктний буфер зв'язується до цілі, попереднє зв'язування для цієї цілі автоматично руйнується. Ім'я об'єктного буферу являє собою беззнакове ціле. Нуль зарезервований, немає об'єктного буферу за умовчанням для кожної цілі. Якщо buffer встановлено у нуль - це ефективно відв'язує будь-який об'єктний буфер пов'язаний раніше, і відновлює пам'ять для даної цілі об'єктного буферу. Імена об'єктних буферів і відповідний вміст об'єктних буферів являються локальними для простору розподіленого списку відображення (перегляньте glXCreateContext) поточного контексту рендерингу OpenGL; два контексти рендерингу поділяють об'єктний буфер тільки якщо вони поділяють списки відображення. Ви також можете використовувати glGenBuffers для генерації множити нових імен об'єктних буферів. Стан об'єктного буферу одразу ж після його першого зв'язування являється буфером пам'яті з нульовим розміром з доступом GL_READ_WRITE і використанням GL_STATIC_DRAW. Поки зв'язується не нульове ім'я об'єктного буферу, наприклад за допомогою виклику glNormalPointer, поточна прив'язка об'єктного буферу (GL_ARRAY_BUFFER_BINDING) копіюється у відповідний стан клієнта для зміни масивів вертексного типу, наприклад, GL_NORMAL_ARRAY_BUFFER_BINDING. Поки не нульовий об'єктний буфер зв'язується до цілі GL_ARRAY_BUFFER, параметр-вказівник на масив вертексів, який традиційно інтерпретується у якості вказівника на пам'ять на стороні клієнта, інтерпретується у якості зміщення всередині об'єктного буфера, яка вимірюється у базових одиницях машини. Поки не нульовий об'єктний буфер зв'язується до цілі GL_ELEMENT_ARRAY_BUFFER, параметр індексів функцій glDrawElements, glDrawRangeElements або glMultiDrawElements, який традиційно інтерпретується у якості вказівника на пам'ять клієнтської сторони, інтерпретується у якості зміщення всередині об'єктного буферу, який вимірюється у базових одиницях машини. Поки не нульовий об'єктний буфер пов'язується до цілі GL_PIXEL_UNPACK_BUFFER, виконуються наступні команди:  glBitmap, glColorSubTable, glColorTable, glCompressedTexImage1D, glCompressedTexImage2D, glCompressedTexImage3D, glCompressedTexSubImage1D, glCompressedTexSubImage2D, glCompressedTexSubImage3D, glConvolutionFilter1D, glConvolutionFilter2D, glDrawPixels, glPixelMap, glPolygonStipple, glSeparableFilter2D, glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D і glTexSubImage3D. Параметр вказівника, який традиційно інтерпретується у якості вказівника на пам'ять клієнтської сторони з якої пікселі розпаковуються, інтерпретуються у якості зміщення всередині буферу, яка вимірюється у базових одиницях машини. Зв'язування об'єктного буферу, яке створене за допомогою функції glBindBuffer остається активним поки інший ім'я об'єктного буферу пов'язується з цією ж самою ціллю, або поки прив'язаний буфер не видалиться за допомогою glDeleteBuffers. Після створення, іменований об'єктний буфер може бути повторно пов'язаний до будь-якої цілі так часто як потрібно. Однак реалізація OpenGL може робити вибір про те як оптимізувати місце збереження об'єктного буфера, основуючись на пов'язувану ціль.

Примітка

glBindBuffer доступна тільки з OpenGL версії 1.5 або вище. GL_PIXEL_PACK_BUFFER i GL_PIXEL_UNPACK_BUFFER доступні тільки якщо версія OpenGL є 2.1 або вищою.

Помилки

GL_INVALID_ENUM генерується якщо target не містить одне з доступних значень. GL_INVALID_OPERATION генерується якщо glBindBuffer викликається між викликами glBegin i відповідного виклику glEnd.

Пов'язані параметри

glGet з параметром GL_ARRAY_BUFFER_BINDING glGet з параметром GL_ELEMENT_ARRAY_BUFFER_BINDING glGet з параметром GL_PIXEL_PACK_BUFFER_BINDING glGet з параметром GL_PIXEL_UNPACK_BUFFER_BINDING

Перегляньте також

glDeleteBuffers, glGenBuffers, glGet, glIsBuffer