OpenGL – Open Graphics Library, открытая графическая библиотека. Термин "открытый" означает независимый от производителей. Имеется спецификация(стандарт) на OpenGL, где все четко задокументировано и описано. Библиотеку OpenGL может производить кто-угодно. Главное, чтобы библиотека удовлетворяла спецификации OpenGL и ряду тестов. Как следствие, в библиотеке нет никаких темных мест, секретов, недокументированных возможностей и т.п; те кто программировал под MSWindows или MSDOS, понимают о чем я говорю. Библиотеку выпускают такие корпорации, как Microsoft, Silicon Graphics, а также просто группы программистов. Одним из таких примеров служит реализация Mesa. Эту библиотеку написал целый ряд программистов, главным автором является Brian Paul. Библиотека Mesa распространяется в исходных текстах на языке Си и собирается почти для любой операционной системы. Стандарт OpenGL развивается с 1992 года. Он разрабатывается фирмой Silicon Graphics. С тех пор библиотека завоевала огромную популярность и была интегрирована со множеством языков и систем разработки приложений. Вы можете писать программу с использованием OpenGL на Си, С++, Pascal, Java и многих других языках. Основное предназначение OpenGL - программирование трехмерной графики.
Нижче наводиться перелік дій, які треба виконати в стандартному проекті Delphi для забезпечення коректного виводу зображення засобами Open GL в окремому вікні:
1. Підключити до модуля форми модуль opengl:
unit Lab1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, opengl;
2. На головну форму проекту встановити об’єкт типу TPaintBox (область для виводу графічних зображень) та розташувати його таким чином, щоб він закривав всю робочу область форми. Об’єкт TPaintBox розміщено на вкладці System панелі ресурсів.
3. До модуля форми додати наступну процедуру
procedure SetDCPixelFormat(hdc: HDC);
var pfd: TPixelFormatDescriptor;
nPixelFormat: integer;
begin
FillChar (pfd, SizeOf(pfd), 0);
nPixelFormat:=ChoosePixelFormat(hdc, @pfd);
SetPixelFormat(hdc, nPixelFormat, @pfd);
end;
4. В клас форми включити методи FormCreate, FormDestroy та The_FormPaint, а також властивість hrc, як показано нижче:
TForm1 = class(TForm)
PaintBox1: TPaintBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure The_FormPaint (Sender: TObject);
private
public
hrc: HGLRC;
end;
Причому методи FormCreate, FormDestroy та The_FormPaint повинні мати наступний зміст:
procedure TForm1.FormCreate(Sender: TObject);
begin
SetDCPixelFormat(Canvas.Handle);
hrc:=wglCreateContext(Canvas.Handle);
end;
procedure TForm1.The_FormPaint (Sender: TObject);
var n,i: integer;
x,y: Real;
begin
{Обов’язкова команда}
wglMakeCurrent(Canvas.Handle, hrc);
{Встановлення кольору фону}
glClearColor(0.2, 0.5, 0.75, 1.0);
{Очистка екрана}
glClear(GL_COLOR_BUFFER_BIT);
{Встановлення кольору переднього плану}
glColor3d(1,1,1);
{ Тут можна писати довільні команди Open GL для
формування графічних зображень}
glBegin(GL_LINE_STRIP);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glEnd;
{Обов’язкова команда}
wglMakeCurrent(0,0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;
5. Встановити обробку подій наступним чином:
об’єкт TForm1
для події onFormCreate – метод FormCreate;
для події onFormDestroy – метод FormDestroy;
об’єкт PaintBox1
для події onPaint – метод The_FormPaint.
Після виконання п’яти перелічених дій слід запустити одержаний проект (меню Run\Run або клавіша F9). Якщо всі дії виконано правильно, то на екрані з’явиться вікно синього кольору з білим прямокутником в центрі. Тепер у відмічену відповідним коментарем область тексту процедури The_FormPaint можна вставляти виклики довільних процедур Open GL та формувати таким чином зображення на формі. Процедура The_FormPaint автоматично викликатиметься якщо при переміщенні форми, зміні її розміру, деактивації /активації тощо виникла необхідність повністю або частково графічне відновити зображення.
При формуванні зображень в бібліотеці Open GL застосовується адитивна RGB-модель кольору. В такій моделі колір формується шляхом змішування променів червоного, зеленого та блакитного кольорів різної інтенсивності. Таким чином, для визначення певного кольору слід вказати інтенсивність його складових.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.