Free Pascal + OpenGL + GLUT

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

first-leon
новенький
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31
Контактная информация:

Сообщение first-leon »

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

Код: Выделить всё

  InitGL;
  ResizeWindow( event.resize.w, event.resize.h );

В свою очередь в отрабатывается следующая конструкция:

Код: Выделить всё

  ...
  if ( not LoadGLTextures ) then
  begin
    result := false;
    exit;
  end;
  ...

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

Но если мы этого не делать - при измении размеров окна, все объекты отображаются без текстур.
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

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