PMG

Форумы по созданию игр
Текущее время: 19 апр 2024 21:04

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Многооконная программа
СообщениеДобавлено: 19 ноя 2007 12:25 
Не в сети
Постоянный

Зарегистрирован: 19 янв 2007 12:29
Сообщения: 82
Привет всем
Подскажите, пожалуйста, как мне организовать многооконную программу: MainFrame и несколько дочерних, как в лучших традициях, только в полноэкранном режиме. А управлять, например, - да просто скрывать окно: ShowWindow() :r

_________________
С уважением, Дмитрий


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 ноя 2007 13:53 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Ничего сложного вроде нет. Создаешь несколько окон в них свои контексты, и потом просто делаешь wglMakeCurrent(hDC_ogl_win, hRC_ogl_win). Я единственное не знаю, как обеспечить паррельность при выполнении в разных потоках. Так как в командах OGL нет своего хэндла.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 ноя 2007 12:51 
Не в сети
Постоянный

Зарегистрирован: 19 янв 2007 12:29
Сообщения: 82
Привет всем

Для меня, MagicWolf, сейчас затруднительно :-( !

Цитата:
Создаешь несколько окон в них свои контексты...
- это также как и формирование контекста редеринга для главного окна?

Цитата:
...делаешь wglMakeCurrent(hDC_ogl_win, hRC_ogl_win)
- где надо вызывать эту функцию?

Надо ли что-то менять в основном цикле проги (e.g. SwapBuffer())?

Подскажите, пожалуйста :r .

Спасибо за участие.

_________________
С уважением, Дмитрий


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 ноя 2007 12:43 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Дмитрий писал(а):
- это также как и формирование контекста редеринга для главного окна?


Да.

Дмитрий писал(а):
- где надо вызывать эту функцию?


Перед любыми вызовами команд OGL.

Дмитрий писал(а):
Надо ли что-то менять в основном цикле проги (e.g. SwapBuffer())?


Нет.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 ноя 2007 18:37 
Не в сети
Постоянный

Зарегистрирован: 19 янв 2007 12:29
Сообщения: 82
Приве всем

Основное затруднение понимания этого вопроса для меня :oops: заключаеться вот в чем: как будет вести себя функция DrawScene(для отображения сцены, которая вызывается в основном циклк проги) если я нарисовал что-то в одном дочернем окне, затем скрываю его и рисую в другом; как мне обрабатывать сообщение WM_SIZE для основного окна и дочерних?

Подскажите, пожалуйста :r

_________________
С уважением, Дмитрий


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 ноя 2007 09:37 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Рисуешь в одном окне drawscene, потом переключаешь контекст, рисуешь в другом drawscene. Если окно скрыто - рисовать в нем не надо, пропускаешь. WM_SIZE обрабатываешь как обычно:
Код:
GLvoid ReSizeGLScene(GLsizei width, GLsizei height)         // Resize And Initialize The GL Window
{
   swidth=width;                                 // Set Scissor Width To Window Width
   sheight=height;                                 // Set Scissor Height To Window Height
   if (height==0)                                 // Prevent A Divide By Zero By
   {
      height=1;                                 // Making Height Equal One
   }
   glViewport(0,0,width,height);                     // Reset The Current Viewport
   glMatrixMode(GL_PROJECTION);                     // Select The Projection Matrix
   glLoadIdentity();                              // Reset The Projection Matrix
   glOrtho(0.0f,640,480,0.0f,-1.0f,1.0f);               // Create Ortho 640x480 View (0,0 At Top Left)
   glMatrixMode(GL_MODELVIEW);                        // Select The Modelview Matrix
   glLoadIdentity();                              // Reset The Modelview Matrix
}


Взято из 24 урока, там ортографическая проекция.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 ноя 2007 12:41 
Не в сети
Постоянный

Зарегистрирован: 19 янв 2007 12:29
Сообщения: 82
Привет всем

Спасибо за ифо, Сергей.

Можно ли сформировать полноэкранный режим на базе этих дочерних окон

Подскажите, пожалуйста :r

_________________
С уважением, Дмитрий


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 ноя 2007 16:44 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Полноэкранный режим в OpenGL, это когда создается окно на весь экран. Перед этим если надо меняется видеорежим экрана. Соответственно, если надо можно при развертывании окна, сменить видеорежим, вывести окно. При сворачивании, восстановить видеорежим по умолчанию.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 ноя 2007 17:17 
Не в сети
Постоянный

Зарегистрирован: 19 янв 2007 12:29
Сообщения: 82
Привет всем
Спасибо за информацию, Сергей

_________________
С уважением, Дмитрий


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB