Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КГ Лаб 02 Побудова дротяних зображень.doc
Скачиваний:
5
Добавлен:
14.02.2015
Размер:
227.33 Кб
Скачать

8

Лабораторна робота 2Побудовадротяних зображень

Лабораторна робота 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 автоматично викликатиметься якщо при переміщенні форми, зміні її розміру, деактивації/активації тощо виникла необхідність повністю або частково графічне відновити зображення.