11.1 Библиотека GLUT. GLUT OpenGl.

OpenGL Utility Toolkit


OpenGL Utility Toolkit (GLUT) – это библиотека различных утилит, предназначенная для приложений, разрабатываемых с использованием  OpenGL API. По большей части данная библиотека отвечает за операции ввода-вывода, необходимые для обмена с операционной системой.

Самые важные функции, которые стоило бы отметить, это:
  • Создание окна приложения.
  • Функции управления окном приложения.
  • Опрос клавиатуры и мыши.
  • Функции для рисования различных геометрических фигур.
  • Функции создания контекстных меню.
  • GAMEMODE (быстрый переход в полноэкранный режим).

Библиотека GLUT была разработана Марком Килгардом, когда он работал в Silicon Graphics Inc.

Как правило, использование данной библиотеки поможет решить вам две основные проблемы:
  • во-первых, это кроссплатформенность вашего кода (функции создания окна и управления им, операции ввода-вывода клавиатуры и мыши).
  • во-вторых, она позволит вам упростить процесс изучения OpenGL API, так как позволит очень быстро и просто создавать ваши программы (как вы помните, мы используем возможности данной библиотеки с первого урока и пока еще не столкнулись даже с намеком на проблемы взаимодействия с Win API).
В следующей части данной главы мы рассмотрим использование данной библиотеки для отрисовки 3D объектов, причем вопрос построения геометрии берет на себя библиотека GLUT. Нашей задачей будет лишь установка необходимых функций и параметров отрисовки.

Модельная трансформация

В одной из предыдущих глав мы познакомились с геометрическими преобразованиями объектов. Стоит отметить, что мы производили операции переноса, вращения и масштабирования, используя математических подход: умножая геометрию объекта на необходимую матрицу, мы непрерывно меняли данные, на основе которых строилась геометрия объекта.

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

В OpenGL API существуют команды для модельных преобразований:
  • glTranslate*()
  • glRotate*()
  • glScale*()
С помощью данных команд вы можете выполнять трансформации объекта или координатной системы (в зависимости от того, как вам легче это представлять).

Данные команды являются эквивалентом соответствующих матриц с вызовом функции glMultMatrix*() с нужной матрицей в качестве аргумента. Но в данном случае использование команд glTranslate, glRotate и glScale может выполниться быстрее. Рассмотрим их немного подробнее.

Перенос

void glTranslate{fd} (TYPE x, TYPE y, TYPE z); - данная команда позволит вам произвести перенос объекта по осям X, Y, Z, которые указываются в качестве параметров.
Уроки OpenGL + C#: Перенос объекта Рисунок 1. Перенос объекта.
Вызов данной функции с параметрами (0.0, 0.0, 0.0) в качестве аргументов – она не повлияет на позицию объекта в пространстве.

Поворот

void glRotate{fd} (TYPE angle, TYPE x, TYPE y, TYPE z); - данная функция умножает текущую матрицу на матрицу, производящую поворот объекта (операция поворота происходит в направлении против часовой стрелки, вокруг луча из начала координат, проходящего через точку (x, y, z)).
Angle задает угол поворота объекта в градусах.
Уроки OpenGL + C#: Поворот объекта Рисунок 2. Поворот объекта.

Масштабирование

void glScale{fd} (TYPE x, TYPE y, TYPE z); - данная команда позволяет сжимать или отражать объект вдоль координатных осей.
Уроки OpenGL + C#: Масштабирование и отражение объекта Рисунок 3. Масштабирование и отражение объекта.
glScale*() – является единственной из трех рассмотренных команд модельных преобразований, которая изменяет размер объекта:
Если вы масштабируете объект с параметрами более 1.0, то объект растягивается.
Используя величины меньше 1.0 - сжимает его.
Масштабирование объекта с величиной параметра -1.0 отразит объект относительно оси или осей (в случае нескольких параметров).

Оболочка программы

Создайте новый проект. После этого создайте окно приложения, разместив на нем элементы управления, как показано на рисунке 4.
Уроки OpenGL + C#: Окно приложения Рисунок 4. Окно приложения.
Для элементов Combobox установите элементы в соответствии с тем, как показано на рисунках 5 и 6.
Уроки OpenGL + C#: Установка элемента ComboBox Рисунок 5. Установка элемента ComboBox.
Уроки OpenGL + C#: Установка элемента ComboBox Рисунок 6. Установка элемента ComboBox.
Для элементов trackBar установите диапазон значений от -50000 до 50000 для перемещений по осям, от -360 до 360 для угла поворота и от -5000 до 5000 для масштабирования. Также добавьте таймер, переименовав экземпляр в RenderTimer и установите время отклика, равное 30 миллисекундам.

Добавить комментарий
Расширенный режим добавления комментариев доступен на форуме: загрузка изображений, цитирование, форматирование текста, и т.д.
Ваше имя:
Текст сообщения:
Комментарии (1):
releyshic
releyshic,  
Как сделать Масштабирование От Скрола мышки? Не нашёл таких событий в SimpleOpenGLControl, события как то можно свои добавлять или портировать из WinForm?
^