glInterleavedArrays - одночасне вказування і увімкнення декількох взаємно змішаних масивів.
C Специфікація
void glInterleavedArrays (GLenum format,
GLsizei stride,
const GLvoid * pointer) ;
Параметри
format - вказує тип масиву. Приймаються наступні символічні константи: GL_V2F, GL_V3F, GL_C4UB_V2F, GL_C4UB_V3F, GL_C3F_V3F, GL_N3F_V3F, GL_C4F_N3F_V3F, GL_T2F_V3F, GL_T4F_V4F, GL_T2F_C4UB_V3F, GL_T2F_C3F_V3F, GL_T2F_N3F_V3F, GL_T2F_C4F_N3F_V3F і GL_T4F_C4F_N3F_V4F.
stride - значення передає зміщення у байтах між кожним агрегованим масивом елементів.
Опис
glInterleavedArrays дозволяє вам вказувати і вмикати індивідуальні масиви для кольору, нормалей, текстур і вертексів, елементи яких являються частинами більшого агрегованого масиву елементів. У деяких реалізаціях цей метод являється більш ефективним, ніж вказування масивів окремо.
Якщо stride містить значення 0, агреговані елементи зберігаються послідовно. В іншому випадку, stride байтів містяться між початком одного агрегованого масиву і початком наступного агрегованого масиву.
Параметр format слугує у якості ключа, який описує отримання індивідуальних масивів з агрегованого масиву. Якщо параметр format містить T, в такому випадку координати отримуються з взаємно змішаного масиву. Якщо присутній символ C, отримуються значення кольорів. Якщо присутній N, отримуються координати нормалей. Координати вертексів витягуються завжди.
Цифри 2, 3 і 4 описують, як багато значення містяться у масиві. F позначає, що значення отримуються у якості дійсних чисел. Кольори можуть бути витягненими у якості 4 беззнакових байтових чисел, якщо 4UB йде після C. Якщо колір отримується у якості 4 беззнакових байтів, масив вертексних елементів, які йдуть після них, розміщуються на першій можливій адресі розміщення дійсного числа одинарної точності (float).
Нотатки
glInterleavedArrays доступний тільки якщо версія OpenGL являється 1.1 або вищою.
Якщо команда glInterleavedArrays викликається під час компілювання списку відображення, вона не входить у даний список і одразу виконується.
Викликати команду glInterleavedArrays не дозволяється між викликами команд glBegin і відповідного виклику glEnd, але помилка може і не генеруватися. Якщо помилка не генерується, операція не визначена.
glInterleavedArrays зазвичай реалізовується на клієнтській стороні.
Параметри вертексного масиву являються станом клієнтської сторони і отже не зберігаються чи відновлюються командами glPushAttrib і glPopAttrib. Замість них використовуйте glPushClientAttrib i glPopClientAttrib.
Для OpenGL версії 1.3 і вище, або коли підтримується розширення ARB_multitexture, glInterleavedArrays оновлює тільки масив текстурних координат для текстурної одиниці стану клієнта. Стан текстурних координат для інших текстурних одиниць клієнта не оновлюється, не зважаючи на те чи увімкнена текстурна одиниця чи ні.
Другорядні значення кольорів не підтримуються у форматах взаємно змішаних вертексних масивів.
Помилки
GL_INVALID_ENUM генерується, якщо параметр format не містить доступного значення.
GL_INVALID_VALUE генерується, якщо параметр stride містить негативне значення.
Перегляньте також
glArrayElement, glClientActiveTexture, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnableClientState, glGetPointerv, glIndexPointer, glNormalPointer, glSecondaryColorPointer, glTexCoordPointer, glVertexPointer
Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glInterleavedArrays.xml