Предполагается, что вторая часть компилятора язь;ка шейдеров OpenGL будет реализована по-разному на разных платформах. Она будет получать высокоуровневое представление от препроцессора и выдавать оптимизированный машинный код для конкретной аппаратной базы. Производители аппаратного обеспечения реализуют это таким образом, чтобы устанавливалось соответствие между высокоуровневым представлением и соответствующими машинными командами их аппаратного обеспечения. Сборка модулей также зависима от аппаратной базы, так как включает в себя зависимые операции, например размещение переменных в физической памяти аппаратного обеспечения.
2.5. Обзор системы
В конечном итоге, производители графических ускорителей будут реализовы-вать большую часть компилятора и компоновщика языка тендеров OpenGL. Это программное обеспечение будет включаться в стандартный пакет от производителя вместе с OpenGL-драйвером.
2.5.3. Расширения OpenGL API
До последней версии OpenGL функциональность языка OpenGL не включалась в стандарт, а была доступна как набор расширений, поддерживаемых различными производителями графических акселераторов. Ожидается, что эта функциональность приживется в стандарте, и можно будет убрать суффикс ARB из имен функций, констант и типов данных этих расширений.
Расширение для шейдеров, программных объектов и функциональности, общей для всех программируемых процессоров, называется ARB shader_objects. Это расширение включает в себя следующие компоненты:
□ gl CreateShaderObj ectARB - создание тендерного объекта;
□ glCreateProgramObjectARB - создание программного объекта;
□ gl Del eteObj ectARB - удаление тендерного или программного объекта;
□ glShaderSourceARB - загрузка строк исходного кода в шейдернып объект;
□ gl Compi 1 eShaderARB - компиляция шейдера;
□ glAttachObjectARB - прикрепление шейдерного объекта к программному объекту;
□ gl DetachObj ectARB - отсоединение шейдерного объекта от программного объекта;
□ gl LinkProgramARB - компоновка программного объекта для создания выполняемого кода;