Войти
ПрограммированиеСтатьиГрафика

OpenGL: Основы. (2 стр)

Автор:

Типы в OpenGL

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

Например, тип GLint соответствует стандартному int:

typedef int GLint;

аналогично:

typedef unsigned int GLuint;
typedef float GLfloat;
typedef double GLdouble;
typedef void GLvoid;

и т.д.

Эти типы объявлены в GL.h. Имена всех этих типов начинаются с GL. Рекомендуется с функциями OpenGL использовать эти типы.

Функции OpenGL

Многие функции OpenGL - вариации друг друга, различаясь только типами данных и их аргументами. Конечно же, этого не было бы, если бы OpenGL изначально был сделан для языков, поддерживающих перегрузку функций, таких как C++.

Чтобы не было путаницы в именах функций, ввели несколько договорённостей (правил), по которым строится имя функции OpenGL.

Во-первых, все имена функций OpenGL начинаются с приставки gl. Например,

glBegin();

glEng();

Во-вторых, если набор функций имеют одинаковый смысл и различаются только количеством и типами параметров, то имя таких функций записывают в виде:

glОбщая_часть_имени_функции[n][type],

где n - количество параметров, type - тип параметров.

Например:

glVertex2d(1.0, 0.5);          // 2d означает: 2 параметра типа GLdouble
glVertex3f(1.0f, 0.5f, 0.0f);  // 3f означает: 3 параметра типа GLfloat
glColor3ub(127, 0, 255);       // 3ub означает: 3 параметра типа GLubyte

Ниже в таблице приведены значения сокращений для type:

iGLint
uiGLuint
fGLfloat
dGLdouble
sGLshort
usGLushort
bGLbyte
ubGLubyte
vмассив

В различных документациях по OpenGL, чтобы не перечислять все функции одного семейства, принято записывать только имя общей части всех функций семейства и в конце ставить звёздочку "*". Например, функции, задающие координаты вершин записывают так:

glVertex*

Дополнительные сведения об OpenGL

Команды OpenGL интерпретируются моделью client/server.

Код приложения (client) выдаёт команды, которые интерпретируются и обрабатываются.

OpenGL (server) может оперировать или не оперировать на компьютере как клиент. Сервер может содержать несколько контекстов OpenGL. Клиент может подключаться к любому из этих контекстов.

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

Дополнительные библиотеки

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

Библиотеки не вносят каких-либо новых возможностей в сам OpenGL. Их назначение, это упрощение кода. Библиотеки избавляют от написания программистами часто встречаемых функций.

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

Наиболее известные библиотеки:

OpenGL Utility Library (glu)

Утилитная библиотека glu предоставляет функции, работающие с матрицами, с координатными системами, с кривыми и поверхностями NURBS и т.п.

Эта библиотека поставляется почти со всеми реализациями OpenGL, в частности с MS Visual C++.

Для того чтобы её использовать, нужно в исходном файле включить заголовочный файл glu.h:

#include <GL/glu.h>

и включить для линковки статическую библиотеку glu32.lib в ваш проект.

Имена функций в этой утилитной библиотеки начинаются на glu, например,

gluPerspective();

OpenGL Auxiliary Library (glaux)

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

Эта библиотека используется реже, и описание функций не включено в MSDN. Файлы для работы с библиотекой также поставляются с MS Visual C++.

Для того чтобы её использовать, нужно в исходном файле включить заголовочный файл glaux.h:

#include <GL/glaux.h>

и включить для линковки статическую библиотеку glaux.lib в ваш проект.

Имена функций в этой утилитной библиотеки начинаются на aux, например,

auxSolidCube();

OpenGL Utility Toolkit (GLUT)

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

Для того чтобы её использовать, нужно в исходном файле включить заголовочный файл glut.h и включить для линковки статическую библиотеку glut32.lib в ваш проект.

Кроме того, у вас должна быть динамически подключаемая библиотека glut32.dll.

Где взять GLUT и другую более подробную информацию по библиотеке:
http://www.opengl.org/developers/documentation/glut/

Страницы: 1 2 3 Следующая »

#OpenGL, #основы

16 февраля 2002 (Обновление: 14 июня 2011)

Комментарии [92]