Интерактивная Компьютерная Графика Часть 6 -1 (оптимизация)
Оптимизация 1. Передача данных в Open. GL: ü Используйте связанные примитивы • • Связанные примитивы (GL_LINE_LOOP, GL_TRIANGLE_FAN, GL_QUAD_STRIP) требуют для определения меньше вершин, чем отдельные линия или многоугольник. Это уменьшает количество данных, передаваемых Open. GL ü Используйте массивы вершин, индексирование, дисплейные списки ü Не указывайте ненужные атрибуты и не вызывайте лишних функций ü Минимизируйте количество лишнего кода между gl. Begin / gl. End ü Храните данные в памяти последовательно ü Не усложняйте избыточно геометрию
Оптимизация 2. Освещение: ü Избегайте использования двухстороннего освещения (two-sided lighting) ü Рассмотрите возможность заранее просчитать освещение • Можно получить эффект освещения, задавая цвета вершин вместо нормалей ü Отключайте нормализацию векторов нормалей, когда это не необходимо ü Если в сцене материалы объектов различаются лишь одним параметром, команда gl. Color. Material может быть быстрее, чем gl. Material
Оптимизация 2. Растеризация: ü Отключайте тест на глубину, когда в этом нет необходимости • Фоновые объекты, например, могут быть нарисованы без теста на глубину, если они визуализируется первыми ü Используйте отсечение обратных граней полигонов • Замкнутые объекты могут быть нарисованы с установленным режимом отсечения обратных граней ü Комбинируйте небольшие текстуры в одну • Это позволяет уменьшить число переключений текстур ü Очищайте все нужные буферы с помощью одной команды gl. Clear.