glNormalPointer - визначає масив нормалей.

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

void glNormalPointer (GLenum type,
                      GLsizei stride,
                      const GLvoid * pointer) ;

Параметри

type - вказує тип даних кожної координати у масиві. Доступні наступні символічні константи GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT i GL_DOUBLE. Значення за умовчанням GL_FLOAT. stride - вказує зміщення у байтах між сусідніми нормалями. Якщо stride являється 0, вважається, що нормалі щільно упаковані у масиві (одна за одною). Значення за умовчанням 0. pointer - передає вказівник на першу координату першої нормалі у масиві. Значення за умовчанням 0.

Опис

Функція glNormalPointer вказує розміщення і формат даних масиву нормалей для використання під час рендерингу. Параметр type вказує тип даних кожної координати нормалі і stride вказує зміщення у байтах між однією нормаллю і наступною, дозволяючи вертексам і атрибутам бути розміщеними у одному масиві, або у різних. (Один масив з даними може бути більш ефективний у деяких реалізаціях; перегляньте glInterleaverdArrays). Якщо не нульовий іменований об'єктний буфер прив'язаний до цілі GL_ARRAY_BUFFER (перегляньте glBindBuffer) поки вказується масив нормалей, параметр pointer трактується у якості зміщення байтів у даних об'єктного буфера. Також, прив'язка об'єктного буферу (GL_ARRAY_BUFFER_BINDING) зберігається у якості нормалей вертексного масиву у стані клієнтської сторони (GL_NORMAL_ARRAY_BUFFER_BINING). Якщо вказаний масив нормалей, параметри type, stride i pointer зберігаються у якості стану клієнтської сторони, у добавок до поточної прив'язки вертексного масиву об'єктного буферу. Для увімкнення або вимкнення масиву нормалей, використовуйте glEnableClientState i glDisableClientState з аргументом GL_NORMAL_ARRAY. Якщо увімкнені, масив нормалей використовується під час виклику функцій glDrawArrays, glMultiDrawArrays, glDrawElements, glMultiDrawElements, glDrawRangeElements або glArrayElement.

Нотатки

glNormalPointer доступний тільки, якщо версія OpenGL являється 1.1 або вищою. Масив нормалей за умовчанням вимкнений і не використовується під час виклику функцій glArrayElement, glDrawElements, glDrawRangeElements, glDrawArrays, glMultiDrawArrays або glMultiDrawElements. Виклик функції glNornalPointer не дозволяється між викликами функцій glBegin і відповідної glEnd, але помилка може не генеруватися. Якщо помилка не генерується, операція не визначена. Функція glNormalPointer зазвичай реалізовується на клієнтській стороні. Параметри масиву нормалей являються станом клієнтської сторони і отже не зберігаються або відновлюються за допомогою команд glPushAttrib i glPopAttrib. Замість них використовуйте glPushClientAtrrib i glPopClientAttrib.

Помилки

GL_INVALID_ENUM генерується коли параметр type не містить допустимого значення. GL_INVALID_VALUE генерується коли stride являється негативним.

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

glIsEnabled з аргументом GL_NORMAL_ARRAY glGet з аргументом GL_NORMAL_ARRAY_TYPE glGet з аргументом GL_NORMAL_ARRAY_STRIDE glGet з аргументом GL_NORMAL_ARRAY_BUFFER_BINDING glGet з аргументом GL_ARRAY_BUFFER_BINDING glGetPointerv з аргументом GL_NORMAL_ARRAY_POINTER

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

glArrayElement, glBindBuffer, glColorPointer, glDisableClientState, glDrawArrays, glDrawElements, glDrawRangeElements, glEdgeFlagPointer, glEnableClientState, glFogCoordPointer, glIndexPointer, glInterleavedArrays, glMultiDrawArrays, glMultiDrawElements, glNormal, glPopClientAttrib, glPushClientAttrib, glSecondaryColorPointer, glTexCoordPointer, glVertexAttribPointer, glVertexPointer Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glNormalPointer.xml