|
Статьи
Урок 4. Типы OpenGL [Фрукт]
Библиотека OpenGL является переносимой по отношению к платформам, операционным системам и средам программирования. Для обеспечения этой независимости в ней, в частности, определены собственные типы. Их префикс — "GL", например, GLint. В каждой среде программирования в заголовочных файлах эти типы переопределяются согласно собственным типам среды. Разберем, как это делается в Delphi.
Заголовочный файл Delphi opengl.pas начинается с определения знакомого нам типа HGLRC:
type HGLRC = THandle;
Далее следует описание всех остальных типов OpenGL, например, наиболее "ходовой" тип GLf loat соответствует типу single:
GLfloat = Single;
Но нe все из типов OpenGL удается точно перевести Например, GLclampf — вещественное число в пределах от нуля до единицы — в Delphi определен просто как single. Поэтому обычно в программах устанавливают "ручную" проверку на вхождение величины такого типа в требуемый диапазон.
Будьте внимательны с целыми числами: помимо типа GLint имеется тип GLuint — целое без знака, соответствующее типу cardinal. В ряду типов OpenGL особо надо сказать о типе
GLboolean = BYTEBOOL;
Соответственно, определены две константы: GL_FALSE = 0; GLJTRUE = 1;
Константы эти имеют непосредственное отношение к типу GLboolean, однако их значения не соответствуют типу BYTEBOOL. Из-за ошибки в описании типа (или определении констант) не удастся использовать стандартный для OpenGL код, поэтому вместо констант GL_FALSE и GLJTRUE будем использовать False и True, соответственно. Конечно, можно самому скорректировать описание типа, например, так:
GLboolean = 0. .1;
После этой корректировки не придется отходить от стандарта кода графической библиотеки, но модифицировать стандартные модули Delphi нежелательно, иначе ваши проекты будут успешно компилироваться только на вашем рабочем месте. Помимо основных типов, стандартных для OpenGL и вводимых в любой среде программирования, в заголовочном файле введены также типы, специфические только для Delphi, например, для наиболее часто употребляемых в OpenGL массивов введены специальные типы:
TGLArrayf4 = array [0..3] of GLFloat; TGLArrayfS = array [0..2] of GLFloat; TGLArrayi4 = array [0..3] of GLint;
Разработчикам также пришлось ввести специальные типы для указателей, например:
PGLfloat = ^GLFloat;
Такого типа нет в стандартном наборе типов OpenGL: библиотека изначально создавалась на языке С, синтаксис которого хорошо приспособлен к использованию указателей, поэтому во введении особого типа для них просто не было необходимости. Вообще, должен сказать, что OpenGL наиболее приспособлен для программирования на С, поэтому некоторые моменты будут вызывать некоторые неудобства при использовании Delphi
|
Категория: Delphi | Добавил: LimansK (14.07.2009)
|
Просмотров: 1265 | Комментарии: 1
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|
|
| | |