glDrawElements - рендеринг примітивів з даних масиву.

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

void glDrawElements (GLenum mode,
                     GLsizei count,
                     GLenum type,
                     const void * indices) ;

Параметри

mode вказує який тип примітивів необхідно намалювати. Приймаються наступні іменовані константи: GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS і GL_POLYGON.

count вказує кількість елементів, які потрібно намалювати.

type вказує тип значень у параметрі indices. Повинен бути одним з наступних іменованих констант: GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT або GL_UNSIGNED_INT.

indices передає вказівник на виділену пам'ять де повинні зберігатися індекси.

Опис

Функція glDrawElements вказує множину геометричних примітивів за допомогою невеликої кількості викликів функцій. Замість виклику функцій OpenGL для передавання кожного вертекса, нормалі, текстурної координати, прапорця грані, або кольору окремо, ви можете вказувати окремі масиви вертексів, нормалей і т.д. і використовувати їх для конструювання послідовності примітивів з одним викликом до glDrawElements.

Під час виклику функції glDrawElements, використовується послідовність count елементів з увімкненого масиву, розпочинаючи з адреси indices для конструювання послідовності геометричних примітивів. Параметр mode вказує який тип примітивів конструююється і як елементи масиву конструюють ці примітиви. Якщо увімкнено більш ніж один масив, використовується кожен. Якщо не увімкнена функція GL_VERTEX_ARRAY, конструюються жодні геометричні примітиви.

Атрибути вертексів, які модифікуються функцією glDrawElements має невизначене значення після повернення glDrawElements. Наприклад, якщо увімкнений масив GL_COLOR_ARRAY, значення поточного кольору невизначене після виклику функції glDrawElements. Атрибути які не модифікуються, утримують свої попередні значення.

Нотатки

Функція glDrawElements доступна у системі OpenGL версій 1.1 або вище.

Функція glDrawElements включається у список відображення. Якщо функція glDrawElements входить у список відтворення, необхідний масив даних (визначається за допомогою вказівників на масиви і увімкнені функції) також включається у список відтворення. Через те що вказівники масивів і увімкнені функції являються станом на стороні клієнта, їхні значення впливають на списки відтворення під час їхнього створення, але не тоді коли він виконується.

Помилки

GL_INVALID_ENUM генерується якщо параметр mode не містить допустимого значення.

GL_INVALID_VALUE генерується якщо параметр count являється негативним.

GL_INVALID_OPERATION генерується якщо ненульове ім'я буферного об'єкту прив'язане до увімкненого масиву або масиву елементів і пам'ять буферного об'єкту в даний момент використовується.

GL_INVALID_OPERATION генерується якщо функція glDrawElements виконується між відповідними викликами функцій glBegin і glEnd.

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

glArrayElement, glColorPointer, glDrawArrays, glDrawRangeElements, glEdgeFlagPointer, glFogCoordPointer, glGetPointerv, glIndexPointer, glInterleavedArrays, glNormalPointer, glSecondaryColorPointer, glTexCoordPointer, glVertexPointer

Оригінал

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glDrawElements.xml