Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Библиотека OpenGL и Object Pascal
Цель лекции: Рассмотреть особенности поддержки различных версий OpenGL в Object Pascal, правила именования процедур и функций, реализующих команды OpenGL, основные типы данных Object Pascal для поддержки OpenGL.
Для использования OpenGL в Delphi входит модуль OpenGL.pas, который содержит объявление процедур, функций, констант и необходимых типов данных.
Для использования OpenGL в программе необходимо в раздел uses модуля включить модуль opengl.pas:
uses opengl;
В качестве компонента, на поверхности которого будет формироваться изображение, лучше использовать TForm. Формирование изображения возможно и на поверхности других графических компонент, но результат вывода изображения может быть нестабилен.
В Object Pascal команды библиотеки OpenGL реализуются с помощью процедур и функций.
Каждая команда OpenGL может быть реализована с помощью одной или нескольких процедур или функций. Названия функций и процедур, реализующих команды OpenGL, имеют определённый формат, позволяющий упростить их использование:
- Все процедуры и функции библиотеки имеют префикс "gl", позволяющий отличить их от процедур и функций других библиотек.
- После префикса следует непосредственно имя команды OpenGL, отражающее её назначение.
- Постфикс в названии процедуры или функции располагается после имени команды и используется для указания числа параметров и при необходимости их типа. Для указания типа параметров используются условные обозначения типов данных, состоящих из одного или двух символов.
- Некоторые процедуры и функции, которые используются для реализации команд библиотеки, могут принимать массивы данных. Для таких вариантов процедур и функций используется дополнительный постфикс "v". Для работы с такими типами в Object Pascal используются указатели на соответствующие типы данных.
В условном обозначении формата процедур и функций необязательные составляющие указываются в квадратных скобках, обязательные параметры указаны в угловых скобках:
procedure gl<ИмяКоманды>[1 2 3 4][b s I f ub us ui][v]([параметры]); function gl<ИмяКоманды>[1 2 3 4][b s I f ub us ui][v]([параметры]):ТипРезультата;
В OpenGL используются собственные типы данных для независимости библиотеки от языка программирования и операционной системы. При использовании реализации OpenGL с тем или иным языком программирования определяется соответствие типов данных OpenGL и языка программирования. В таблица 2.1 приводится информация о соответствии типов данных OpenGL и Object Pascal. В таблице также указаны условные обозначения типов данных, которые используются в названиях процедур и функций, реализующих команды OpenGL.
Условное обозначение в названии команды OpenGL | Тип данных OpenGL | Тип данных Object Pascal |
---|---|---|
b | GLbyte | Shortint |
s | GLshort | SmallInt |
i | GLint | Integer |
f | GLfloat | Single |
d | GLdouble | Double |
ub | GLubyte | Byte |
us | GLushort | Word |
ui | GLuint | Cardinal |
GLenum | Cardinal | |
GLboolean | BYTEBOOL |
Как уже было написано выше, в поставку Delphi входит модуль Opengl.pas, содержащий объявления процедур, функций и констант, соответствующих версии 1.2 библиотеки OpenGL. При желании использовать возможности более поздних версий библиотеки OpenGL потребуется воспользоваться реализацией аналогичного модуля от сторонних разработчиков. Одним из вариантов является использование модуля dglOpenGL.pas [ 9 ] от сообщества немецких разработчиков Delphi OpenGL Community [ 1 ] . Новости о выходе новых версий этого модуля регулярно размещаются на официальном сайте наблюдательного совета по развитию OpenGL [ 1 ] .
Необходимо обратить внимание на то, что модуль содержит сцециальные функции для инициализации OpenGL. Поэтому необходимо ознакомиться с документаций и примерами использования данного модуля, которые расположены на странице размещения модуля.
Краткие итоги
В лекции рассмотрена поддержка библиотеки OpenGL в Object Pascal (Delphi), особенности именования процедур и функций, которые реализуют команды библиотеки OpenGL, соответствие типов данных OpenGL и Object Pascal.