- •Лабораторна робота 2
- •Побудова дротяних зображеньІз застосуванням бібліотеки OpenGl Теоретичні відомості Бібліотека Open gl – загальні відомості
- •Стандартний проект Delphi для застосування бібліотеки Open gl
- •Модель кольору бібліотеки Open gl
- •Система координат в бібліотеці Open gl
- •Графічні примітиви бібліотеки Open gl
- •Сукупність точок
- •Сукупність відрізків прямих ліній
- •Ламані лінії
- •Замкнута ламана лінія
- •Товщина ліній та шаблон їх заповнення
- •Розв’язок
- •Завдання на лабораторну роботу
- •До звіту включити:
Лабораторна робота 2
Побудова дротяних зображень Із застосуванням бібліотеки OpenGL 1
Теоретичні відомості 1
Бібліотека Open GL – загальні відомості 1
Стандартний проект Delphi для застосування бібліотеки Open GL 1
Модель кольору бібліотеки Open GL 2
Система координат в бібліотеці Open GL 3
Графічні примітиви бібліотеки Open GL 3
Сукупність точок 4
Сукупність відрізків прямих ліній 5
Ламані лінії 5
Замкнута ламана лінія 5
Товщина ліній та шаблон їх заповнення 5
Задача 6
Розв’язок 6
Завдання на лабораторну роботу 7
До звіту включити: 8
Побудова дротяних зображеньІз застосуванням бібліотеки OpenGl Теоретичні відомості Бібліотека Open gl – загальні відомості
OpenGL (Open Graphics Library) – відкрита графічна бібліотека. Термін "відкрита" означає незалежність від виробника. Розроблена специфікація (стандарт) на OpenGL, де все чітко задокументовано та описано. Бібліотеку OpenGL може розробляти будь-хто. Головне, щоб бібліотека задовольняла специфікації OpenGL и ряду тестів. Як наслідок, бібліотека не має ніяких темних місць, секретів, не документованих можливостей. Бібліотеку випускають такі корпорації, як Microsoft, Silicon Graphics, а також просто групи програмістів. Одним з таких прикладів є реалізація Mesa. Цю бібліотеку написав цілий ряд програмістів, головним автором є Brian Paul. Бібліотека Mesa розповсюджується в початкових кодах на мові Си та збирається для будь-якої операційної системи. Стандарт OpenGL розвивається з 1992 року. Він розробляється фірмою Silicon Graphics. С тих пір бібліотека завоювала величезну популярність та була інтегрована з багатьма мовами та системамирозробки додатків. Ви можете писати програму з використанням OpenGL на Си, С++, Pascal, Java та багатьох інших мовах. Основне призначення OpenGL – програмування тривимірної графіки.
Стандартний проект Delphi для застосування бібліотеки Open gl
Нижче наводиться перелік дій, які треба виконати в стандартному проекті Delphi для забезпечення коректного виводу зображення засобами Open GL в окремому вікні:
1. Підключити до модуля форми модуль opengl:
unitMainUnit;
interface
uses
Windows,Messages,SysUtils, … 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. Встановити обробку подій onFormCreate та onFormDestroy для форми та The_FormPaint для об’єкт PaintBox
5. В клас форми включити методи FormCreate, FormDestroy та The_FormPaint, а також властивість hrc, як показано нижче:
TfrmMain = 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 TfrmMain.FormCreate(Sender:TObject);
begin
SetDCPixelFormat(Canvas.Handle);
hrc:=wglCreateContext(Canvas.Handle);
end;
procedure TfrmMain.The_FormPaint(Sender:TObject);
var
n,i:integer;
x,y:single;
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 TfrmMain.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;
Після виконання п’яти перелічених дій слід запустити розроблений проект. Якщо всі дії виконано правильно, то на екрані з’явиться вікно синього кольору з білим прямокутником в центрі. Тепер у відмічену відповідним коментарем область тексту процедури The_FormPaint можна вставляти виклики довільних процедур Open GL та формувати таким чином зображення на формі. Процедура The_FormPaint автоматично викликатиметься якщо при переміщенні форми, зміні її розміру, деактивації/активації тощо виникла необхідність повністю або частково графічне відновити зображення.