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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2010, 16:24   #31
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Здравствуйте. Подскажите, пожалуйста, как избежать исчезновения некоторых компонентов, которые заезжают на окно, где с помощью OpenGL рисуется какая-то картинка? Например, MainMenu, раскрываясь, частично иссчезает, и его не видно. Также, окно, открываемое с помощью ShowMessage, начинает мигать по бокам (но оно не иссчезает подобно MainMenu).

Вероятно, OpenGL рисует графику поверх этих окон, но что же делать? Неужели, каждый раз при открытии MainMenu нужно останавливать таймер?
ZotaC вне форума Ответить с цитированием
Старый 13.10.2010, 17:09   #32
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Вообще, не очень хорошая идея комбинировать графику opengl и виндовый gdi, через который все компоненты рисуются - будут тормоза вероятно. Но если уж на то пошло,
Цитата:
Неужели, каждый раз при открытии MainMenu нужно останавливать таймер?
, то почему бы и нет?
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 13.10.2010, 17:28   #33
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

...или как вариант разработать собственные компоненты или меню под oGL, и на нем рисовать все ПользовательскиеИнтерфейсыУправлени я ))
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 13.10.2010, 18:11   #34
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Selestis, .pixel, тормоза и есть, но я пишу не просто игру, а редактор карт для игры. Причем, графика выводится в окне. Там столько компонентов уже... Что же это, придется переписывать MainMenu, ListBox, TreeView и все остальное?
ZotaC вне форума Ответить с цитированием
Старый 14.10.2010, 19:35   #35
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

..еще можно выделить отдельное окно для кнопок редактирования и всяческих контекстных меню... потом данное окно можно будет с боку помещать как toolbox в каком-нибудь редакторе.
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 14.10.2010, 19:40   #36
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

ZotaC, в таком случае вас абсолютно не должно волновать, будет ли во время открытия меню работать таймер. Вырубите на время клика и дело с концов. Кстати, в такой ситуации и вовсе без таймера можно обойтись...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 06.11.2010, 01:21   #37
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Люди, подскажите, как делаются полноэкранные приложения на OpenGL? Нет, как развернуть его на весь экран, я знаю, и это не так сложно. Мне интересно, как сделать поддержку нескольких разрешений.
ZotaC вне форума Ответить с цитированием
Старый 06.11.2010, 10:53   #38
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

глянь тут... из примеров CodeSampler.
для смены разрешения экрана используется WinAPI ф-я ChangeDisplaySettings.
Вложения
Тип файла: zip ogl_fullscreen.zip (30.9 Кб, 15 просмотров)
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 06.11.2010, 14:33   #39
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

.pixel, спасибо, но там C++ - то, в чем я не силен, навевает ужас. Если не сложно, то можно хотя бы в общих чертах рассказать о том, как такое делается? Не именно смена разрешения, потому что это я умею, а то, как расположить объекты в соответствии с этим разрешением, например. Каков общий принцип? Даже можно без кода.
ZotaC вне форума Ответить с цитированием
Старый 06.11.2010, 20:38   #40
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

ZotaC,
Цитата:
...Каков общий принцип?...
Вы хотите менять разрешение и делать его оконным или полноэкранным в меню игры (на ходу)? Тогда в логике вашего приложения должны присутствовать… «переключатели-флаги» (обычно булевские переменные, наподобие: IsActive, IsWindowed … ) для отключения процедур (вернее обхода их, чтобы они не выполнялись) которые могли бы использовать контекст оgl и тянули за собой ф-ции прорисовки (применительно к уже не существующему контексту). Контекст же в каждом случае придется создавать заново и инициализировать всю графику. Поэтому надо позаботиться о том, что бы уничтожение контекста и его окружения (ваших данных), а так же инициализацию контекста и загрузку окружения вывести в разные «удобовызываемые ф-ии».

На пример из SDK по DX9-му. Samples. В каждом примере есть возможность смены разрешения.

Логика там следующая…
Как только пользователь выбирает пункт меню «ChangeDevice (F2)»

Происходит исполнение следующего кода…
Pause(true);
UserSelectNewDevice();
Pause(false);

В процедуре Pause() все флаги программы, которые отвечают за обход логики прорисовки «включаются».

а в UserSelectNewDevice() пользователь выбирает новые параметры отображения программы и нажимает «ок». Кроме того в данной процедуре происходит уничтожение старого контекста( Cleanup3DEnvironment() ) со всеми прикрепленными к нему данными и создание нового( Initialize3DEnvironment() ).

Далее логика прорисовки опять включается - Pause(false);

Что-то подобное я думаю, если немного постараться можно и для программы на основе oGL’a реализовать). Тут будут интересны следующие моменты оптимизации, поскольку сам я не практиковал еще «смену отображения на ходу»… будут ли теряться «ресурсы» Текстуры, Сетки, P-буферы и VBO… или, может будет достаточным пройтись по данным, проверить их на «валидность» и в случае его обновить/ догрузить поврежденные, а нет с новым контекстом придется грузить все заново)
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL...Игры без тормозов...Как?! saggy Мультимедиа в Delphi 10 03.07.2010 12:25
разработка игры "Реверси". Имеется код этой игры на С++ CD-RW Помощь студентам 0 28.03.2010 00:13
Хочу начать писать игры на OpenGL lionbeast Помощь студентам 2 02.10.2009 11:04
OpenGL Paul_AG C++ Builder 20 14.09.2009 19:07
OpenGL в С# LeGAl Общие вопросы .NET 0 30.04.2009 02:15