OpenGL в Delphi

Команда glScissor


Вернемся к проекту из подкаталога Ex02, в котором область вывода задается на половину экрана. Возможно, вас этот пример не удовлетворил: хотя картинка и выводится на половину экрана, окрашивается все-таки весь экран, а иногда это нежелательно и необходимо осуществлять вывод именно в пределах некоторой части окна.
Решение может заключаться в использовании функции вырезки glscissor, определяющей прямоугольник в окне приложения, т. e. область вырезания. После того как область вырезки задана, дальнейшие команды воспроизведения могут модифицировать только пикселы, лежащие внутри области (формулировка взята из файла справки).
Для использования этой функции необходимо включить режим учета вырезки:

glEnable(GL_SCISSOR_TEST);

После использования вырезки этот режим необходимо отключить парной командой glDisable.
Разберите проект из подкаталога Ex09 (второй пример этой главы), дополненный строками включения режима вырезки и командой, задающей область вырезки:

glEnable(GL_SCISSOR_TEST}; // включаем режим использования вырезки.
glScissor(0, 0, round(ClientWidth/2), ClientHeight); // область вырезки

Функция glScissor не заменяет команды glviewport, задающей область вывода: если в этом примере область вывода распространить на весь экран, то на экране будет рисоваться половина картинки, т. e. только то, что попадает в область вырезки.



Содержание раздела