- •Что такое OpenGl?
- •Первое знакомство с программой OpenGl
- •Синтаксис OpenGl
- •Конвейер визуализации OpenGl
- •Подготовка данных для отправки в OpenGl
- •Вершинные шейдеры
- •Мозаичные шейдеры
- •Наша первая программа: Подробное обсуждение Ввод main()
- •Запуск OpenGl
- •Распределение объектов буфера вершин
- •Инициализация вершинных и фрагментарных шейдеров
- •Наш первый рендеринг в OpenGl
- •Рисование в OpenGl
- •Включение и выключение команд в OpenGl
- •Шейдеры и OpenGl
- •Настраиваемый конвейер OpenGl
- •Обзор OpenGl Shading Language
- •Создание шейдера при помощи glsl Точка отправления
- •Задача переменных
- •Охват переменных
- •Инициализация переменных
- •Сложные типы
- •Получение доступа к элементам матриц и векторов
- •Структуры
- •Квалификаторы хранилищ
- •Заявления
- •Вычислительная инвариантность
- •Глобальные функции компиляции шейдеров
- •Блоки интерфейса
- •Унифицированные блоки
- •Указание унифицированных блоков в шейдере
- •Доступ к унифицированным блокам из приложения
- •Блоки In/Out
- •Компилирование шейдеров
- •Наша функция LoadShaders()
- •Подпрограммы шейдеров
- •Установка подпрограмм glsl
- •Раздельные объекты шейдеров
Введение в OpenGL
Цель данной главы.
После прочтения этой главы вы сможете:
описать назначение OpenGL, что можно и нельзя сделать в данной программе в отношении генерирования изображений на компьютере;
распознать основную структуру приложения OpenGL;
перечислить стадии наложения шейдеров в конвейере визуализации OpenGL.
Эта глава - введение в OpenGL, в ней вы найдете следующие подразделы:
“Что такое OpenGL?” описывает что OpenGL из себя представляет, что можно и невозможно сделать в данной программе.
“Первое знакомство с программой OpenGL” даёт вводную информацию о том, как выглядит программа.
“Синтаксис OpenGL” описывает формат имен команд, принятый в OpenGL
“Конвейер визуализации OpenGL” описывает порядок рендеринга изображений в программе.
“Наша первая программа: Подробное обсуждение” дает подробное описание первой приведенной программы, а также предоставляет более детальное описание процессов каждого узла программы.
Что такое OpenGl?
OpenGL это интерфейс программирования приложений (“application programming interface”, сокр. “API”), который является лишь библиотекой программного обеспечения для доступа к работе с графическим оборудованием. Описываемая в данном тексте версия 4.3 библиотек OpenGL содержит более 500 различных команд, которые вы можете использовать для создания объектов, изображений и процессов внутри интерактивного трехмерного приложения.
Программа OpenGL разработана как лёгкий, аппаратно-независимый интерфейс, с помощью которого можно работать с различными видами систем графического оборудования, или же полностью через программное обеспечение (если в комплектации не представлено графическое оборудование), вне зависимости от операционной системы компьютера. Таким образом, OpenGL не включает в себя функции операционной системы и системы ввода пользовательской информации, а значит вашей программе потребуется пользоваться функциями оболочки операционной системы, в которой она будет выполняться.Также, OpenGL не предоставляет функциональные возможности для описания моделей трехмерных объектов или операций для чтения файлов изображений (таких как JPEG-файлы, например). Так что вы должны построить свои трехмерные объекты из небольшого набора геометрических примитивов - точек, линий, треугольников и пятен.
Поскольку OpenGL на рынке давно - версия 1.0 программы была выпущена Silicon Graphics Computer Systems еще в июле 1994 года - существует множество как версий самой программы, так и версий библиотек программного обеспечения, собранного в OpenGL для облегчения разработки приложений, вне зависимости от того, разрабатываете ли видео игру, или создаете визуализацию для научного или медицинского проекта, или даже просто демонстрируете изображения. Однако, современная версия программы отличается от исходной в нескольких важных аспектах. В данной книге мы описываем принцип использования современной версии OpenGL для создания таких приложений.
Следующий список вкратце описывает основные процессы, которые выполняет OpenGL при рендеринге изображений. (см. “Конвейер визуализации OpenGL” для более подробного описания).
определяет данные для построения фигур на основе геометрических примитивов OpenGL.
применяет различные “шейдеры” к введенным примитивам с целью определения их положения, цвета, и других свойств рендеринга.
конвертирует математическое описание введенных примитивов в их “фрагменты”, привязанные к их положению на экране. Этот процесс называется “растеризация”.
наконец, выполняет шейдеры фрагментов для каждого растрированного ранее фрагмента с целью определить их конечные положение и цвет.
кроме того возможна дополнительная по-фрагментная обработка с целью задать дополнительные параметры отображения, такие как видимость, прозрачность и цвет фрагмента в зависимости от настоящего положения на экране.
OpenGL функционирует как система “клиент-сервер”, к которой программа, которую вы пишете, является “клиентом”, а процесс исполнения OpenGL, который предоставляет производитель графического оборудования вашего компьютера - “сервер”. В некоторых случаях исполнения (на таких операционных системах как X Windows Systems) процессы “клиента” и “сервера” выполняются на разных вычислительных машинах, связанных в компьютерную сеть посредством сетевых протоколов. В таком случае, “клиент” подает команду OpenGL, которая конвертируется в “протокол” оконной системы, которые потом передается по компьютерной сети на “сервер”, где преобразуется в конечное изображение.
