■ Векторы и матрицы добавлены как базовые типы.
• Появились новые типы attribute, uniform, varying, которые описывают переменные для управления вводом/выводом шейдера.
• Тип attribute используется для передачи часто изменяемых значений от приложения к вершинному шейдеру.
■ Тип va ryi ng используется для передачи промежуточных данных от вершинного шейдера фрагментному шейдеру.
• Тип uni form используется для передачи нечасто изменяемых данных от приложения к вершинному и фрагментному шейдерам.
• Добавлен дискретизатор для доступа к текстурам.
■ Существует доступ к состоянию OpenGL и стандартной функциональности через встроенные переменные.
■ Включено множество встроенных функций для выполнения графических операций,
■ Из языка C++ заимствованы обязательность объявления функций и перегрузка функций по количеству и типу аргументов.
■ Переменные можно объявлять при необходимости, а не в начале блока. Чтобы установить и использовать шейдеры OpenGL, нужно проделать следующее:
1. Создать один или несколько пустых шейдерных объектов функцией gl Create-ShaderObjectARB.
2. Задать исходный код шейдеров функцией gl ShaderSourceARB.
3. Скомпилировать каждый шейдер функцией gl Compi 1 eShader ARB.
4. Создать программный объект функцией gl CreateProgramObjectARB.
5. Присоединить все созданные шейдерные объекты к программному объекту функцией gl AttachOb jectARB.
6. Скомпоновать программный объект функцией gl Li nkProgramARB.
7. Установить выполняемую программу как часть текущего состояния OpenGL функцией gl UseProgramObjectARB.
Все следующие графические примитивы будут нарисованы с помощью этих шейдеров, а не с использованием стандартных операций OpenGL.
2.8. Ссылки
Чтобы лучше разобраться в предмете, просто продолжайте изучать книгу. А за техническими подробностями можно обратиться к спецификации. На веб-сайте компании SDlabs можно найти дополнительную информацию - презентации, демонстрационные программы, примеры шейдеров и их исходный код,
1. 3Dlabs. Веб-сайт для разработчиков (http://www.3dlabs.com/support/developer).
2. Kessenich J„ Baldwin D., Rost R, The OpenGL Shading Language, Version 1.051/ 3Dlabs. 2003 (http://www.3dlabs.com/support/developer/ogl2).
3. OpenGL Architecture Review Board: спецификация расширения ARB_vertex_sha-der, реестр расширений OpenGL (http://oss.sgi.com/projects/ogl-sample/registry),
4. OpenGL Architecture Review Board: спецификация расширения ARB_f ragnent_sha -der, реестр расширений OpenGL (http://oss.sgi.com/projects/ogl-sam ple/registry).
5. OpenGL Architecture Review Board: спецификация расширения ARB_shader_ob-jects, реестр расширений OpenGL (http://oss.sgi.com/projects/ogl-sampLe/regis-