glValidateProgram - перевіряє програмний об'єкт.

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

void glValidateProgram(	GLuint program);

 

Параметри

program вказує ідентифікатор програмного об'єкта, який необхідно перевірити.

Опис

Функція glValidateProgram перевіряє чи виконувані програми у програмі з ідентифікатором, який міститься у параметрі program, може виконуватися в поточному стані OpenGL. Інформація згенерована за допомогою процесу перевірки буде збережена у інформаційному журналі програми program. Інформація перевірки може містити пустий рядок символів, або може містити рядок з інформацією про те, як поточний програмний об'єкт взаємодіє з іншими системами поточного стану OpenGL. Це забезпечує спосіб для реалізаторів систем OpenGL для висвітлення інформації про те чому поточна програма може бути не ефективною, не оптимальною, не в спромозі виконатись і т.д.

Статус операції перевірки буде збережено у якості частини стану програмного об'єкта. Дане значення буде встановлено у GL_TRUE, якщо перевірка пройшла успішно, і GL_FALSE у випадку помилки. Його можна отримати за допомогою виклику функції glGetProgram з аргументами program і GL_VALIDATE_STATUS. Якщо перевірка пройшла успішно, гарантується, що програма program виконається у поточному стані. В іншому випадку, гарантується, що програма program не виконається.

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

Нотатки

Функція glValidateProgram доступна у системах OpenGL версії 2.0 або вище.

Дана функція відтворює операцію перевірки, яку реалізації OpenGL повинні виконувати під час виконання команд рендерингу, поки програмовані шейдери являються частиною поточного стану. Помилка GL_INVALID_OPERATION буде згенерованою glBegin, glRasterPos, або будь-якою командою, яка виконує неявний виклик glBegin, якщо:

  • будь-які два активних семплера у поточному програмному об'єкті мають різний тип, але відносяться до однієї текстурної одиниці;
  • будь-який семплер у поточному програмному об'єкті відноситься до зображення текстурної одиниці, під час отримання доступу обробником фіксованим фрагментними функціоналом до текстури, яка не відповідає типу семплера, або;
  • сума кількості активних семплерів у програмі і сума зображень текстурних одиниць увімкнених для обробки фіксованим функціоналом перевищила комбіноване обмеження на загальній кількості дозволених зображень текстурних одиниць.

У програмах можуть виникнути деякі труднощі або деградація продуктивності під час перехоплення цих помилок при виконанні команд рендерингу. Отже, рекомендується, що програми будуть викликати функцію glValidateProgram для визначення цих проблем тільки під час розробки програми.

Помилки

GL_INVALID_VALUE генерується якщо параметр program містить значення не згенероване системою OpenGL.

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

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

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

glGetProgram з аргументом program і GL_VALIDATE_STATUS

glGetProgramInfoLog з аргументом program

glIsProgram

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

glLinkProgram, glUseProgram

Оригінал

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