2.6. Основные преимущества

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

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

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

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

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

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

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

□ Неограниченные возможности для оптимизации компилятора, обеспечивающие оптимальную производительность на различных платформах.

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

□ Открытый межплатформенный стандарт.

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


⇐ вернуться назад | | далее ⇒