Производители аппаратного обеспечения должны создавать реализацию внутреннего модуля компилятора (back-end) для конкретного графического акселератора. Обычно в таком модуле содержится специфическая информация о графическом акселераторе, которая является интеллектуальной собственностью производителя. От производителей не ожидают, что они опубликуют исходный код этих модулей.

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

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

8.6, Ссылки Создатели реализаций OpenGL, которые основывают свой компилятор на внешнем интерфейсе компилятора от 3Dlabs, очень помогают своим будущим пользователям: семантика языка будет проверяться одинаково во всех реализациях, которые будут использовать этот интерфейс. Это будет очень удобно для разработчиков, так как они смогут полагаться на согласованную обработку ошибок даже в разных реализациях OpenGL.

Скорее всего, немногие читатели этой книга будут разрабатывать компилятор языка шейдеров OpenGL, но эта ссылка будет полезна для всех. Исходный код внешнего интерфейса компилятора можно загрузить с веб-сайта компании 3Dlabs (http://www.3dLabs.com).

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


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