Библиотека 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
Зарег. на сайте Всего: 25149 Новых за месяц: 3 Новых за неделю: 0 Новых вчера: 0 Новых сегодня: 0 Из них Администраторов: 1 Модераторов: 2 Проверенных: 1 Обычных юзеров: 25145
Все материалы размещенные на сайте пренадлежат их владельцам и предоставляются исключительно в ознакомительных целях. Администрация этого сайта не несет ответственность за использование материалов,ссылок и информации находящихся на этом сайте. !!! Все авторские права принадлежат только настоящим владельцам всех файлов которые публикуются на этом сайте!!!