УПРАВЛЕНИЕ ЭФФЕКТИВНОСТЬЮ РАБОТЫ АЛГОРИТМА РАСТЕРИЗАЦИИ

Иногда для повышения эффективности работы графического приложения можно упростить работу некоторых алгоритмов растеризации, например, при сглаживании точек и линий, при формировании тумана, при интерполировании координат для цвета и текстур и т.п. Правда, на это можно пойти, если нет нарушения эстетического восприятия итогового изображения. Управлять процессом растеризации можно командой

void glHint (Glenum target, Glenum mode)

Здесь target - вид контролируемой задачи, принимает одно из следующих значений:

target

Контролируемые параметры

GL_FOG_HINT

Точность вычисления тумана

GL_POINT_SMOOTH_HINT

Качество сглаживания (антиалиасинг) при растеризации точки

GL_LINE_SMOOTH_HINT

Качество сглаживания (антиалиасинг) при растеризации линии

GL_POLYGON_SMOOTH_HINT

Качество сглаживания (антиалиасинг) при растеризации сторон полигона

GL_PERSPECTIVE_CORRECTION_HINT

Процесс интерполяции значений координат точек при вычислении цвета и текстурировании

Возможные значения параметра mode в виде символьных констант:

mode

Значения

GL_FASTEST

Быстрый алгоритм

GL_NICETESR

Алгоритм с высоким качеством результата

GL_DONT_CARE

Базовый алгоритм

OpenGL может отклонить ваши рекомендации, записанные в команде glHint(), из-за невозможности выполнения данного режима, так как конкретные реализации OpenGL могут по-разному выполнять свои команды.

ЗАКЛЮЧЕНИЕ

В узких рамках данного пособия трудно раскрыть все возможности OpenGL. Но мне кажется, что тот материал, который представлен, послужит хорошей базой для самостоятельного изучения и исследования возможностей библиотеки.

В пособие не вошли вопросы реалистической графики, связанные с построением теней и зеркального отражения. Дело в том, что OpenGL не располагает специальными средствами для получения подобных эффектов. Обычно используют индивидуальные способы построения теней и зеркального отражения. В частности, интересные алгоритмы построения теней различной сложности и на различные поверхности можно взять, например с сайтов http://ixbt.com и http://www.gamedev.ru.

За очевидной мощью графической библиотеки скрывается множество "подводных камней", связанных с неэффективным использованием некоторых ее команд. Рассмотрим некоторые из них.

  • • Не увлекайтесь матричными операциями. Если, например, требуется для каждого кадра анимации осуществлять поворот glRotate* и перемещение glTranslate*, то гораздо эффективней две эти матрицы свести в одну и выполнять единственную эту матрицу, используя команду glLoadMatrixa*.
  • • Старайтесь работать списками изображений, так как при очередном вызове дисплейного списка координаты вершин и их атрибуты уже находятся в памяти видеокарты, что положительно сказывается на производительности обработки изображения.
  • • Используйте векторную форму задания параметров команд OpenGL, что эффективней скалярного задания соответствующих величин.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >