Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2010, 16:12   #1
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию Множественный просмотр в OpenGL

Как можно реализовать множесивенный просмотр обекта в OpenGL. Чтобы плучилось примерно вот так.


Я пробовал изменить просмотр с прмощью следующей процедуры
Код:
procedure TForm1.SetView(X, Y, W, H: Glint);
begin
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45, W / H, 1, 1000);
  glViewport(X, Y, W, H);
  glMatrixMode(GL_MODELVIEW);
end;
вызывая ее перед каждым рендерингом с новыми параметрами

Код:
procedure TForm1.FormPaint(Sender: TObject);
begin
  // Просмотр - 1
  SetView(0, Height div 2,Width div 2,Height div 2);
  RendScene(Camera1);
  // Просмотр - 2
  SetView(Width div 2,Height div 2,Width div 2,Height div 2);
  RendScene(Camera2);
  // Просмотр - 3
  SetView(0, 0, Width div 2,Height div 2);
  RendScene(Camera3);
  // Просмотр - 4
  SetView(Width div 2, 0,Width div 2,Height div 2);
  RendScene(Camera4);
end;
Но каждий последующий рендеринг закрашивает педыдущий цветом очистки. В итоге
видна только последняя четвертая картинка.

Изображения
Тип файла: jpg Picture-1.jpg (68.6 Кб, 80 просмотров)
Тип файла: jpg Picture-2.jpg (23.2 Кб, 79 просмотров)
Miha85193 вне форума Ответить с цитированием
Старый 01.12.2010, 16:43   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

RendScene должно быть содержит код очистки буфера кадра...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 01.12.2010, 17:23   #3
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

Вот, примерно так.

Код:
procedure TForm1.RendScene(Camera: TGLCamera);
var
  Error_: GLuint;
begin
  glLoadIdentity();
  glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  // Управление обзором
  Camera.Look;

  {Здесь идет рендеринг}
  
  SwapBuffers(wglGetCurrentDC);

  Error_ := glGetError;
  if (Error_ <> GL_NO_ERROR) then
    ShowMessage(String(gluErrorString(Error_)));
end;
Возможно здесь что-то лишнее?

Последний раз редактировалось Miha85193; 01.12.2010 в 17:41.
Miha85193 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
множественный выбор в dbgrid IvanKonst БД в Delphi 7 03.09.2010 16:27
множественный выбор dimast_bl_y Microsoft Office Access 1 09.07.2010 16:28
множественный выбор в cxGrid ~=DEN=~ Общие вопросы Delphi 1 20.05.2010 10:17
Множественный поиск на листе. _KA_ Microsoft Office Excel 3 28.10.2009 23:07
Множественный тип Ruska882009 PHP 5 30.09.2009 13:08