glNewList - створення або заміна списку відображення
C специфікація
void glNewList (GLuint list,
GLenum mode) ;
void glEndList (void) ;
Параметри
list - вказує ім'я списку відображення.
mode - вказує режим компіляції, який може містити GL_COMPILE або GL_COMPILE_AND_EXECUTE.
Опис
Списки відображення являється групами команд OpenGL, які були збереженими для подальшого виконання. Списки відображення створюються за допомогою команди glNewList. Усі наступні команди поміщаються у список відобареження у вказаному порядку, поки не викликається команда glEndList.
Команда glNewList має два аргументи. Перший аргумент, list, являється позитивним цілим числом, яке стає унікальним ім'ям для списку відображення. Імена можуть створюватися і резервуватися за допомогою команди glGenLists і тестуватися на унікальність за допомогою команди glIsList. Другий аргумент, mode, являється символічною константою яка може приймати одне з двох значень:
- GL_COMPILE - команди компілюються у список
- GL_COMPILE_AND_EXECUTE - команди виконуються поки компілюються у список відображення.
Певні команди не компілюються у список відображення, але одразу виконуються, не зважаючи на режим списку відображення. Даними командами являються: glAreTexturesResident, glColorPointer, glDeleteLists, glDeleteTextures, glDisableClientState, glEdgeFlagPointer, glEnableClientState, glFeedbackBuffer, glFinish, glFlush, glGenLists, glGenTextures, glIndexPointer, glInterleavedArrays, glIsEnabled, glIsList, glIsTexture, glNormalPointer, glPopClientAttrib, glPixelStore, glPushClientAttrib, glReadPixels, glRenderMode, glSelectBuffer, glTexCoordPointer, glVertexPointer і glGet.
Подібно, glTeximage1D, glTexImage2D i glTexImage3D виконуються одразу і не компілюються у список відображення, коли їхній аргумент являється GL_PROXY_TEXTURE_1D, GL_PROXY_TEXTURE_1D або GL_PROXY_TEXTURE_3D відповідно.
Якщо підтримується розширення ARB_imaging, glHistogram виконується одразу коли її аргумент являється GL_PROXY_HISTOGRAM. Подібно, glColorTable виконується одразу коли її перший аргумент являється GL_PROXY_COLOR_TABLE, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE або GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE.
Для версії OpenGL 1.3 або вище, або коли підтримується розширення ARB_multitexture, glClientActiveTexture не компілюється у список відображення, замість цього одразу виконується.
Коли викликається команда glEndList, визначення списків відображення завершується асоціюванням списку з унікальним ім'ям list (вказаним для команди glNewList). Якщо список відображення з ім'ям list вже існує, вона перезаписується тільки коли викликається glEndList.
Нотатки
glCallList і glCallLists можуть бути включеними у списки відображення. Команди у списку відображення або списках виконуються за допомогою команд glCallList або glCallLists не включається у створюваний список відображення, навіть якщо режим створення списку являється GL_COMPILE_AND_EXECUTE.
Список відображення являється групою команд і аргументів, отож помилки, що генеруються при виконанні команд у списку відображення повинні генеруватися коли список відображення виконується. Якщо список відображення створюється у режимі GL_COMPILE, помилки не генеруються поки список виконується.
Помилки
GL_INVALID_VALUE генерується коли параметр list містить значення 0.
GL_INVALID_ENUM генерується якщо параметр mode містить недопустиме значення.
GL_INVALID_OPERATION генерується якщо glEndList викликається без попереднього виклику glNewList, або glNewList викликається поки список відображення визначається.
GL_INVALID_OPERATION генерується коли glNewList або glEndList виконуються між командами glBegin і відповідної glEnd.
GL_OUT_OF_MEMORY генерується якщо недостатньо пам'яті для компіляції списку відобраежння. Якщо OpenGL версії 1.1 або вище, жодні зміни не виконуються до попереднього вмісту списку відображення, якщо такий присутній, і жодні зміни не виконуються до стану OpenGL. (Ніби не було спроби створити новий список відображення).
Пов'язані параметри
glIsList
glGet з аргументом GL_LIST_INDEX
glGet з аргументом GL_LIST_MODE
Перегляньте також
glCallList, glCallLists, glDeleteLists, glGenLists
Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glNewList.xml