Методы оптимизации под OPENGL
9
на видеокартах ATI) позволяет избавиться от дегенератов (degenerate
triangles).
Вертексы и индексы должны быть отсортированы так, чтобы
максимально задействовать pre-vertex cache и post-vertex cache. GPU
всегда использует pre-vertex cache и читает вертексы «наперед», по-
этому полезно расположить вертексы, используемые через неболь-
шие промежутки времени, близко один к другому [3]. В post-vertex
cache GPU хранит несколько последних трансформированных вер-
тексов, что позволяет не выполнять для них повторные трансформа-
ции. Использование лент треугольников дает возможность в макси-
мальной степени задействовать post-vertex cache.
Сжатие текстур увеличивает производительность благодаря
уменьшению количества пересылаемых данных по шине. Основных
способов сжатия текстур три: DXT1, DXT3 и DXT5. Первый позво-
ляет сжимать текстуры в 8 раз, но имеет альфа-канал всего в один
бит, т. е. полупрозрачные текстуры не поддерживаются. Второй и
третий имеют поддержку альфа-канала, но сжимают текстуры в 4 ра-
за хуже. Отметим, что DXT3 может давать лучшее качество, если ис-
ходное изображение содержит резкие переходы альфа-канала. Стоит
учесть, что степень сжатия всегда гарантирована. DXT — это алго-
ритм сжатия с потерями. Качество исходного изображения может не-
значительно измениться, но в общем случае разница между сжатой и
оригинальной текстурами не заметна. Использование сжатия позво-
ляет также увеличить скорость загрузки текстур и уменьшить размер
установочного пакета приложения.
Использование объектов с различной степенью детализации
положительно скажется на производительности, если во время
рисования выбирать наиболее подходящую модель по расстоянию до
камеры. Это позволит сократить расходы на рендеринг удаленных
объектов, не нуждающихся в высокой детализации.
Таким образом, низкоуровневые оптимизации значительно
уменьшают нагрузку на CPU, а оптимизации рисования и самих мо-
делей снижают нагрузку на GPU, что помогает создавать качествен-
ное и быстрое программное обеспечение.
ЛИТЕРАТУРА
[1] Евченко А.И.
OpenGL и DirectX: программирование графики. Для профес-
сионалов.
Санкт-Петербург, Питер, 2006, 350 с.
[2] Фрэнсис Х.
OpenGL. Программирование компьютерной графики. Для
профессионалов.
Шкадов А., ред. Санкт-Петербург, Питер, 2002, 1088 с.
[3] Шикин Е.В., Боресков А.В.
Компьютерная графика. Полигональные мо-
дели.
Москва, ДИАЛОГ-МИФИ, 2001, 384 с.
Статья поступила в редакцию 05.06.2014