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

UptoLike

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

Основы компьютерной графики для программистов 68
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
);
Для освобождении контекста воспроизведения потока первый параметр игнорируется,
а второй должен иметь нулевое значение. При успешном выполнении функция
возвращает значение True.
Завершающие действия описаны в процедуре
FormDestroy:
procedure TfrmGL.FormDestroy(Sender: TObject);
begin
wglMakeCurrent(0, 0);
wglDeleteContext(RContext);
ReleaseDC (Handle, RContext);
DeleteDC (hdc);
end;
Параметры визуализации
Для изучения моделей отражения и освещения в OpenGL рассмотрим фрагменты
программы, которая предназначена для интерактивной и наглядной демонстрации
работы этих моделей.
Процедура вывода на экран очередного кадра изображения является ключевой. Для
того чтобы автоматическая перерисовка окна не стирала изображение кадра, все
действия встроены в обработчик перерисовки формы
FormPaint.
procedure TfrmGL.FormPaint(Sender: TObject);
var
ps : TPaintStruct;
begin
try
BeginPaint (Panel1.Handle, ps); //для устойчивой работы
//очистка буферов цвета и глубины
glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );
SetUpCommons;
DrawScene;
glFlush;
SwapBuffers(hrc);
EndPaint (Panel1.Handle, ps);
except
end;
end;
Для большей надежности работы операторы заключены в конструкцию try..except, а
также в программные скобки BeginPaint – EndPaint. Функция BeginPaint подготавливает
окно для вывода графики.
Собственно обновление окна производится вызовом функций OpenGL:
glFlush;
SwapBuffers(hrc);
Функция glFlush заставляет сервер OpenGL закончить все команды по построении
сцены OpenGL за конечное, как сказано в документации, время. Таким образом, мы
Основы компьютерной графики для программистов                                                                  68
____________________________________________________________________________________________________________________


                  );
Для освобождении контекста воспроизведения потока первый параметр игнорируется,
а второй должен иметь нулевое значение. При успешном выполнении функция
возвращает значение True.
Завершающие действия описаны в процедуре FormDestroy:
     procedure TfrmGL.FormDestroy(Sender: TObject);
     begin
       wglMakeCurrent(0, 0);
       wglDeleteContext(RContext);
       ReleaseDC (Handle, RContext);
       DeleteDC (hdc);
     end;


Параметры визуализации
Для изучения моделей отражения и освещения в OpenGL рассмотрим фрагменты
программы, которая предназначена для интерактивной и наглядной демонстрации
работы этих моделей.
Процедура вывода на экран очередного кадра изображения является ключевой. Для
того чтобы автоматическая перерисовка окна не стирала изображение кадра, все
действия   встроены    в    обработчик     перерисовки   формы     FormPaint.

procedure TfrmGL.FormPaint(Sender: TObject);
var
  ps : TPaintStruct;
  begin
   try
    BeginPaint (Panel1.Handle, ps); //для устойчивой работы
       //очистка буферов цвета и глубины
       glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );
           SetUpCommons;
           DrawScene;
       glFlush;
       SwapBuffers(hrc);
    EndPaint (Panel1.Handle, ps);
   except
   end;
end;

Для большей надежности работы операторы заключены в конструкцию try..except, а
также в программные скобки BeginPaint – EndPaint. Функция BeginPaint подготавливает
окно для вывода графики.
Собственно обновление окна производится вызовом функций OpenGL:
                   •      glFlush;
                   •      SwapBuffers(hrc);

Функция glFlush заставляет сервер OpenGL закончить все команды по построении
сцены OpenGL за конечное, как сказано в документации, время. Таким образом, мы

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