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