Основы компьютерной графики для программистов. Казанцев А.В. - 69 стр.

UptoLike

Составители: 

Основы компьютерной графики для программистов 69
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
форсируем построение очередного кадра полностью прежде чем он будет показан на
экране.
Функция SwapBuffers выводит изображение очередного кадра с невидимой области
построения на экран. В качестве входного параметра этой функции указывается
идентификатор контекста устройства, типа HDC, который был предварительно получен
для окна Windows, в которое осуществляется вывод графики. Функция возвращает
значение true при успешном выполнении
.
За построение очередного кадра ответственны три функции:
glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );
SetUpCommons;
DrawScene;
Функция glClear предназначена для очистки буферов OpenGL. Буферы OpenGL это
двумерные массивы размером с окно вывода, которые содержат различные
специфические параметры трехмерной сцены. Например, в нашем случае используется
два буфера: буфер цвета и буфер глубины. Как можно догадаться, буфер цвета
содержит информацию о цвете пикселов, а в буфере глубины содержится текущее
значениеглубиныпикселов,
т.е. значение координат точек по оси z, которые видимы
наблюдателю. Битовая константа на входе функции glClear, которая ответственна за
очистку буфера цвета, называется GL_COLOR_BUFFER_BIT, а буфера глубины -
GL_DEPTH_BUFFER_BIT. В OpenGL используются и некоторые другие буферы,
рассматривать их мы пока не будем.
Следующие две пользовательские функции интенсивно используют функции OpenGL.
Функция SetUpCommons предназначена для установки необходимых параметров
визуализации. Внутри функции DrawScene строятся трехмерные объекты и
осуществляются их перемещения и другие необходимые трансформации с учетом
предварительно установленных параметров визуализации.
Рассмотрим каким образом настраиваются параметры вида и проекции в функции
SetUpCommons:
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
Case RGProj.ItemIndex of
0: glOrtho (-LC,LC,-Panel1.height/Panel1.width*LC,
Panel1.height/Panel1.width*LC, 3, 1000);
1: glFrustum (-1,1,-Panel1.height/Panel1.width,
Panel1.height/Panel1.width, 3, 1000);
end;//case
procedure TfrmGL.InitViewPort;
begin
glViewport(0, 0, Panel1.Width, Panel1.Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glFrustum (-1,1,-Panel1.height/Panel1.width,
Panel1.height/Panel1.width, 3, 1000);
end;
Основы компьютерной графики для программистов                                                                  69
____________________________________________________________________________________________________________________



форсируем построение очередного кадра полностью прежде чем он будет показан на
экране.
Функция SwapBuffers выводит изображение очередного кадра с невидимой области
построения на экран. В качестве входного параметра этой функции указывается
идентификатор контекста устройства, типа HDC, который был предварительно получен
для окна Windows, в которое осуществляется вывод графики. Функция возвращает
значение true при успешном выполнении.
За построение очередного кадра ответственны три функции:
                   •      glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );
                   •      SetUpCommons;
                   •      DrawScene;

Функция glClear предназначена для очистки буферов OpenGL. Буферы OpenGL это
двумерные массивы размером с окно вывода, которые содержат различные
специфические параметры трехмерной сцены. Например, в нашем случае используется
два буфера: буфер цвета и буфер глубины. Как можно догадаться, буфер цвета
содержит информацию о цвете пикселов, а в буфере глубины содержится текущее
значение “глубины” пикселов, т.е. значение координат точек по оси z, которые видимы
наблюдателю. Битовая константа на входе функции glClear, которая ответственна за
очистку буфера цвета, называется GL_COLOR_BUFFER_BIT, а буфера глубины -
GL_DEPTH_BUFFER_BIT. В OpenGL используются и некоторые другие буферы,
рассматривать их мы пока не будем.
Следующие две пользовательские функции интенсивно используют функции OpenGL.
Функция SetUpCommons предназначена для установки необходимых параметров
визуализации. Внутри функции DrawScene строятся трехмерные объекты и
осуществляются их перемещения и другие необходимые трансформации с учетом
предварительно установленных параметров визуализации.
Рассмотрим каким образом настраиваются параметры вида и проекции в функции
SetUpCommons:
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity;

     Case RGProj.ItemIndex of
       0: glOrtho    (-LC,LC,-Panel1.height/Panel1.width*LC,
                        Panel1.height/Panel1.width*LC, 3, 1000);

      1: glFrustum (-1,1,-Panel1.height/Panel1.width,
       Panel1.height/Panel1.width, 3, 1000);
   end;//case

   procedure TfrmGL.InitViewPort;
      begin
       glViewport(0, 0, Panel1.Width, Panel1.Height);
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity;
       glFrustum (-1,1,-Panel1.height/Panel1.width,
                        Panel1.height/Panel1.width, 3, 1000);
   end;


http://www.ksu.ru/persons/9134.ru.html