Побудова дротяних зображень з застосуванням бібліотеки OpenGL (Лабораторна робота № 2)

Страницы работы

Содержание работы

Лабораторна робота №2 – Побудова дротяних зображень з застосуванням бібліотеки OpenGL

 Теоретичні відомості

Бібліотека Open GL – загальні відомості

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

Нижче наводиться перелік дій, які треба виконати в стандартному проекті 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

При формуванні зображень в бібліотеці Open GL застосовується адитивна RGB-модель кольору. В такій моделі колір формується шляхом змішування променів червоного, зеленого та блакитного кольорів різної інтенсивності. Таким чином, для визначення певного кольору слід вказати інтенсивність його складових.

Похожие материалы

Информация о работе