
- •Уральский государственный технический университет – упи имени первого Президента России б.Н. Ельцина
- •Программное обеспечение мультимедиа
- •Содержание лекции
- •Введение
- •1. Создание двумерных изображений
- •1.1. Растровая графика
- •1.2. Векторная графика
- •2. Создание трёхмерных изображений
- •2.1.Программные библиотеки и стандарты
- •2.2. Программируемость
- •3. Анимация изображения
- •3.1.Формирование графических моделей
- •3.2.Неиерархические модели
- •3.3. Иерархические модели
- •3.4.Метод «жёсткого» программирования
- •.5.Анимация
- •3.6.Объекты и иерархия
- •3.7.Граф сцены
- •4. Звуковое сопровождение
- •4.1.Семплирование
2.2. Программируемость
Программируемость – ключевое слово в OpenGL 2.0, оно означает ориентацию API на более широкое взаимодействие с приложениями. Как и подобает подобному стандарту, программируемость графики реализуется через высокоуровневый язык программирования. Язык обладает богатой функциональностью, независим от аппаратных решений (как и подобает стандарту) и разработан специально для OpenGL. Выделим ключевые моменты языка.
Программируемая обработка вершин – про эту функцию вы еще много услышите. Она заменит трансформацию координат, наложение материала (material application), освещение и позволит выполнять произвольные операции по вершинам.
Программируемая обработка фрагментов является еще одной ключевой особенностью. Она заменит доступ к текстурам, наложение текстур и туман и позволит выполнять произвольные операции по фрагментам. Именно этого так долго ждали разработчики.
Программируемый формат изображений заменит фиксированное сжатие изображений, позволив произвольно сочетать тип и формат при отсылке/получении пиксельных данных через OpenGL.
Как видим, идея заключается в уменьшении потребности в существующих и будущих расширениях с помощью замены «запутанности» на «программируемость», обеспечив богатую и долговечную функциональность.
Возможности
Среди других функций, включенный в новый стандарт, можно отметить следующие:
прямая поддержка многопроходных алгоритмов, управление осуществляется приложением;
более гибкая конфигурация кадрового буфера;
внеэкранный (off-screen) рендеринг с помощью OpenGL;
приложение может управлять текстурной памятью;
единое строение объектов OpenGL;
более гибкая поддержка форматов изображений при чтении и записи;
более четкие и эффективные механизмы синхронизации;
приложение управляет сменой буфера (buffer swaps);
использование любого буфера цвета (color buffer) в качестве текстуры.
Следующий график наглядно демонстрирует эволюцию OpenGL.
Рис.4. Эволюция OpenGL.
Преимущества нового API заключаются в стандартизации возможностей и улучшенной производительности, помимо стандартизации существующей функциональности. Большая часть опциональной области OpenGL 1.3 по обработке изображений (imaging subset) перешла в разряд стандарта OpenGL 2.0. Многочисленные расширения будут введены в стандартный состав OpenGL 2.0, что позволит выжать максимальную производительность из «железа». В результате мы выиграем в производительности при работе с графической подсистемой и добьемся большего параллелизма между процессором и графическим чипом. Схематично вид нового API можно представить следующей схемой:
Итак, когда ситуация казалась весьма мрачной, графическое сообщество доказало свою приверженность именно графике, а не своим платформам и продуктам. Даже Microsoft показала свой интерес к расширению OpenGL, но намного более воодушевляет желание основных производителей «железа» открыть свою интеллектуальную собственность, хотя раннее они высказывались в противоположном направлении. И ATi, и nVidia подтвердили свое желание вместе работать над технологиями.