|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.10.2010, 16:24 | #31 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
Здравствуйте. Подскажите, пожалуйста, как избежать исчезновения некоторых компонентов, которые заезжают на окно, где с помощью OpenGL рисуется какая-то картинка? Например, MainMenu, раскрываясь, частично иссчезает, и его не видно. Также, окно, открываемое с помощью ShowMessage, начинает мигать по бокам (но оно не иссчезает подобно MainMenu).
Вероятно, OpenGL рисует графику поверх этих окон, но что же делать? Неужели, каждый раз при открытии MainMenu нужно останавливать таймер? |
13.10.2010, 17:09 | #32 | |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Вообще, не очень хорошая идея комбинировать графику opengl и виндовый gdi, через который все компоненты рисуются - будут тормоза вероятно. Но если уж на то пошло,
Цитата:
Изобретатель велосипедов
|
|
13.10.2010, 17:28 | #33 |
c++, dx/ogl
Форумчанин
Регистрация: 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! |
13.10.2010, 18:11 | #34 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
Selestis, .pixel, тормоза и есть, но я пишу не просто игру, а редактор карт для игры. Причем, графика выводится в окне. Там столько компонентов уже... Что же это, придется переписывать MainMenu, ListBox, TreeView и все остальное?
|
14.10.2010, 19:35 | #35 |
c++, dx/ogl
Форумчанин
Регистрация: 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! |
14.10.2010, 19:40 | #36 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
ZotaC, в таком случае вас абсолютно не должно волновать, будет ли во время открытия меню работать таймер. Вырубите на время клика и дело с концов. Кстати, в такой ситуации и вовсе без таймера можно обойтись...
Изобретатель велосипедов
|
06.11.2010, 01:21 | #37 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
Люди, подскажите, как делаются полноэкранные приложения на OpenGL? Нет, как развернуть его на весь экран, я знаю, и это не так сложно. Мне интересно, как сделать поддержку нескольких разрешений.
|
06.11.2010, 10:53 | #38 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
глянь тут... из примеров CodeSampler.
для смены разрешения экрана используется WinAPI ф-я ChangeDisplaySettings.
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
06.11.2010, 14:33 | #39 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
.pixel, спасибо, но там C++ - то, в чем я не силен, навевает ужас. Если не сложно, то можно хотя бы в общих чертах рассказать о том, как такое делается? Не именно смена разрешения, потому что это я умею, а то, как расположить объекты в соответствии с этим разрешением, например. Каков общий принцип? Даже можно без кода.
|
06.11.2010, 20:38 | #40 | |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
ZotaC,
Цитата:
На пример из 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! |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |