glGetError - повертає інформацію про помилку.
C-специфікація
GLenum glGetError (void) ;
Опис
Функція GetError повертає значення прапорця помилки. Кожній відомій помилці присвоюється цифровий код і символічне ім'я. Якщо виникає помилка, встановлюється відповідне значення коду помилки у прапорець помилки. Жодні інші помилки записуються у нього, до виклику функції glGetError, яка повертає код помилки, після чого прапорець помилки встановлюється у значення GL_NO_ERROR. Якщо виклик функції glGetError повертає GL_NO_ERROR, жодна відома помилка виникала від останього виклику glGetError, або відколи запущена система OpenGL.
Щоб дозволити розподілені реалізації, існує можливість існування декількох прапорців помилок. Якщо будь-який з них містить зареєстрований код помилки, після виклику glGetError повертається значення даного прапорця і він встановлюється у значення GL_NO_ERROR, а його значення встановлюється у GL_NO_ERROR. Якщо більш ніж один прапорець містить код помилки, функція glGetError повертає і очищує довільний. Тобто, функція glGetError повинна завжди виконуватися у циклі, поки вона не поверне GL_NO_ERROR, якщо необхідно очистити усі прапорці помилок.
За умовчанням, усі прапорці помилок встановлюються у значення GL_NO_ERROR.
Існує наступний список визначених помилок:
- GL_NO_ERROR. Була записана жодна помилка. Гарантується, що значення цієї символічної константи буде 0.
- GL_INVALID_ENUM. Вказано недопустиме значення у якості аргументу функції, який повинен міститись у визначеній множині.
- GL_INVALID_VALUE. Числовий аргумент міститься поза дозволеним проміжком. Команда, яка викликається не виконує змін у систему, окрім як встановлення прапорця помилки.
- GL_INVALID_OPERATION. Вказана операція не дозволена у поточному стані. Команда, що викликається ігнорується і не виконує змін у систему OpenGL, окрім встановлення значення даної помилки у прапорець помилок.
- GL_STACK_OVERFLOW. Команда, яка викликається спричинить переповнення стеку. Команда ігнорується і не виконує змін у систему OpenGL, окрім встановлення даної помилки у прапорець помилок.
- GL_STACK_UNDERFLOW. Виконувана команда спричинить вихід за межі стеку. Команда генерується і не виконує змін у систему OpenGL, окрім встановлення значення даної помилки у прапорець помилки.
- GL_OUT_OF_MEMORY. Залишилось недостатньо пам'яті для виконання команди. Після генерування даної помилки, стан системи OpenGL невизначений, окрім стану прапорців помилок.
- GL_TABLE_TOO_LARGE. Вказана таблиця виходить за межі підтримуваного розміру таблиці. Команда, що викликається ігнорується, жодні зміни вносяться в систему OpenGL, окрім встановлення даного значення у прапорець помилки.
Коли встановлюється прапорець помилки, результат виконання операції OpenGL невизначений тільки якщо виникла помилка GL_OUT_OF_MEMORY. В усіх інших випадках, команда, яка генерує помилку ігнорується і не здійснює змін у стан системи OpenGL, або вміст буферу кадру. Якщо команда повертає значення, вона повертає значення 0. Якщо сама функція glGetError генерує помилку, вона повертає 0.
Нотатки
GL_TABLE_TOO_LARGE була впроваджена у системі OpenGL версії 1.2.
Помилки
GL_INVALID_OPERATION генерується якщо команда glGetError викликається між відповідними викликами функцій glBegin і glEnd. У такому разі функція glGetError повертає 0.
Оригінал
https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetError.xml