Free Pascal + OpenGL + GLUT

Модератор: Модераторы

Сообщение first-leon » 28.12.2006 16:48:06

Итак, плюнул с высока на GLUT :), переписал код для использования SDL.
Почти сразу столкнулся вот с чем: В уроках NEHE, а именно в 6 и последующих(Уроки именно с использованием SDL, потому что я видел и с использованием GLUT), при обработке события о изменении размеров окна, вызываются две функции:
Код: Выделить всё
  InitGL;
  ResizeWindow( event.resize.w, event.resize.h );

В свою очередь в
Код: Выделить всё
InitGL
отрабатывается следующая конструкция:
Код: Выделить всё
  ...
  if ( not LoadGLTextures ) then
  begin
    result := false;
    exit;
  end;
  ...

А LoadGLTextures понятное дело - создает текстуры. Вот и вопрос - зачем каждый раз при изменении окна заново создавать текстуры?

Но если мы этого не делать - при измении размеров окна, все объекты отображаются без текстур.
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение FedeX » 30.12.2006 08:26:23

Судя по всему подвох кроется в этой функции:
surface := SDL_SetVideoMode( event.resize.w, event.resize.h, SCREEN_BPP, videoflags );
Если загружать текстуру только один раз и убрать из SDL_VIDEORESIZE эту функцию то всё ОК. Наверное SDL в этой функции переинициализирует весь контекст OpenGL и все переменные OpenGL збрасываются.
Кстати, странно, но у меня в этой демке изначально не работал полноэкранный режим, даже до отключения функции SDL_SetVideoMode.
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Пред.

Вернуться в Графика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru
cron