glVertexPointer - визначення масиву вертексних даних.
C специфікація
void glVertexPointer (GLint size,
GLEnum type,
GLsizei stride,
const GLvoid* poiter) ;
Параметри
size - вказує кількість координат на один вертекс. Повинно мати значення 2, 3 або 4. Значення за умовчанням 4.
type - вказує тип даних кожної координати у масиві. Доступні наступні символічні константи GL_SHORT, GL_INT, GL_FLOAT або GL_DOUBLE. Значення за умовчанням GL_FLOAT.
stride - вказує байтове зміщення між сусідніми вертексами. Якщо значення stride являється 0, вважається що вертекси щільно упаковані у масиві. Значення за умовчанням 0.
pointer - передає вказівник на першу координату у масиві. Значення за умовчанням 0.
Опис
glVertexPointer вказує розміщення і формат даних у масиві координат вертексів для використання під час рендерингу. Параметр size вказує кількість координат на вертекс, і повинен мати значення 2, 3 або 4. Парамтер type вказує тип даних кожної координати, і stride вказує зміщення від одного вертекса до наступного, дозволяючи вертексам і атрибутам бути упакованими у один масив або у різних масивах. (Одно-масивна пам'ять може бути більш ефективною на деяких реалізаціях; перегляньте glInterleavedArrays).
Якщо не нульовий іменований об'єктний буфер прив'язаний до цілі GL_ARRAY_BUFFER (перегляньте glBindBuffer) поки вказаний вертексний масив, параметр pointer трактується у якості зміщення байтів у даних об'єтного буферу. Також, зв'язування об'єктного буферу (GL_ARRAY_BUFFER_BINDING) зберігається у якості вертексного масиву у стані клієнтської сторони. (GL_VERTEX_ARRAY_BUFFER_BINDING).
Коли вказаний вертексний масив параметри size, type, stride i pointer зберігаються у якості стану клієнтської сторони, у добавок до поточної прив'язки вертексного масиву об'єктного буферу.
Для увімкнення чи вимкнення вертексного масиву, викликайте glEnableClientState i glDisableClientState з аргументом GL_VERTEX_ARRAY. Якщо увімкнений, вертексний масив використовується коли викликаються glArrayElement, glDrawArrays, glMultiDrawArrays, glDrawElements, glMultiDrawElements або glDrawRangeElements.
Примітка
glVertexPointer доступний тільки якщо версія OpenGL являється 1.1 або вищою.
Вертексні масиви за умовчанням вимкнені і не використовуються коли викликаються функції glArrayElement, glDrawElements, glDrawRangeElements, glDrawArrays, glMultiDrawArrays або glMultoDrawElements.
Виконання glVertexPointer не дозволяється між викликами glBegin і відповідного glEnd, але помилка може не генеруватись. Якщо жодна помилка не генерується, операція не визначена.
glVertexPointer зазвичай реалізовується на клієнтській стороні.
Параметри вертексного масиву являються клієнтським станом і отже не зберігаються функціями glPushAttrib i glPopAttrib. Використовуйте glPushClientAttrib i glPopClientAttrib.
Помилки
GL_INVALID_VALUE генерується коли параметр size не містить значення 2, 3 або 4.
GL_INVALID_ENUM генерується коли type не містить допустимого значення.
GL_INVALID_VALUE генерується коли stride містить негативне значення.
Пов'язані параметри
glIsEnabled з аргументом GL_VERTEX_ARRAY
glGet з аргументом GL_VERTEX_ARRAY_SIZE
glGet з аргументом GL_VERTEX_ARRAY_TYPE
glGet з аргументом GL_VERTEX_ARRAY_STRIDE
glGet з аргументом GL_VERTEX_ARRAY_BUFFER_BINDING
glGet з аргументом GL_ARRAY_BUFFER_BINDING
glGetPointerv з аргументом GL_VERTEX_ARRAY_POINTER
Перегляньте також
glArrayElement, glBindBuffer, glColorPointer, glDisableClientState, glDrawArrays, glDrawElements, glDrawRangeElements, glEdgeFlagPointer, glEnableClientState, glFogCoordPointer,glIndexPointer, glInterleavedArrays, glMultiDrawArrays, glMultiDrawElements, glNormalPointer, glPopClientAttrib, glPushClientAttrib, glSecondaryColorPointer, glTexCoordPointer, glVertex, glVertexAttribPointer
Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glVertexPointer.xml