Все новые функции более подробно описаны в главе 7. Полный список функций этих расширений представлен в приложении Б в конце книги.

2.6. Основные преимущества При создании языка шейдеров OpenGL приходилось делать выбор за или против каких-либо факторов. В результате он приобрел следующие преимущества.

□ Тесная интеграция с OpenGL.

Язык шейдеров OpenGL был спроектирован для использования совместно с OpenGL. Специально предусмотрено, что практически любое OpenGL-приложение можно легко изменить, чтобы иметь возможность использовать новейшие программируемые возможности графического ускорителя. Дополнительным удобством языка является то, что он основан на существующей архитектуре OpenGL, использует хорошо знакомые разработчикам API-функции и имеет встроенные возможности доступа к внутреннему состоянию OpenGL.

□ Компиляция во время выполнения.

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

□ Независимость от языка ассемблера разных производителей.

И DirectX и OpenGL поддерживают интерфейсы языка ассемблера для програм-мируемости графики. Высокоуровневые языки шейдеров могут быть (и были) построены на базе этих интерфейсов языка ассемблера, и можно транслировать программу на высокоуровневом языке в программу на языке ассемблера вообще без OpenGL или DirectX. Это дает некоторые преимущества, но, если полагаться на интерфейс языка ассемблера как основной, осложняет работу проектировщиков графических акселераторов и затрудняет нововведения. Проектировщики, использующие выразительный язык высокого уровня, а не ограничивающий язык ассемблера, имеют больше шансов получить выигрыш

В момент написания книги OpenGL ARB нее еще предполагает, что необходимо также альтернативное представление шейдеров в другой, нежели исходный код, форме. Главными целями такого представления янляются защита интеллектуальной собственности и улучшение производительности за счет частичной предварительной компиляции. Когда будет определено такое API. тендеры могут стать непереносимыми между платформами, зато разработчики приложений будут иметь возможность защитить свой код и улучшить производительность.


⇐ Предыдущая| |Следующая ⇒