![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
konekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.5.2008 Репутация: нет Всего: нет |
Изменяю цикл обработки сообщений следующим образом:
MSG mssg; PeekMessage(&messg,NULL,0,0,PM_NOREMOVE); while(mssg.message!=WM_QUIT){ if(PeekMessage(&mssg,NULL,0,0,PM_REMOVE)){ TranslateMessage(&mssg); DispatchMessage(&mssg); } else{ ///Нет сообщений для обработки - выполнить код игры Render(); } } Вроде бы цикл обработки сообщений должен постоянно вызывать Render() Но на самом деле такого у меня не происходит. Если кто знает причину то помогите разобраться. |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: нет Всего: 21 |
поставь в обе ветви ( if и else) счётчики для подсчёта количества входов в каждую ветвь.
Увидишь куда чаще заходишь. -------------------- Мне нужны помощники. |
|||
|
||||
konekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.5.2008 Репутация: нет Всего: нет |
Счетчики ставил. Получается, что функция Render() никогда не вызывается, а должна , по идеи, вызываться все время
![]() Зато сообщение WM_PAINT вызывается постоянно. Логика вроде в этом коде есть и он ДОЛЖЕН вызывать функцию Render() но он НЕ ВЫЗЫВАЕТ. |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: нет Всего: 21 |
Ветвь else не вызовется никогда, перенеси свой render в ветвь if и всё.
Добавлено через 2 минуты и 7 секунд А не вызовется, потому, что для этого нужно, чтобы не было сообщения для функции. А без сообщения не вызовется твоя функция обработки сообщений. Понял? -------------------- Мне нужны помощники. |
|||
|
||||
konekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.5.2008 Репутация: нет Всего: нет |
Вообще вставить функцию Render() в тело if веще хорошая, но этот код взят из книги по DirectX9 Алена Торна и по всем параметрам должен работать.
Если есть сообщений для обработки, то должна выполняться ветвь if, а если нет сообщений (тоесть я не посылаю окну ни-каких команд) должна выполняться ветвь else, которая минуте Translant Message и DispatchMassage. |
|||
|
||||
Supersedes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.7.2008 Репутация: нет Всего: нет |
Все прекрасно работает. Ищи ошибку где-нить еще. Кстати у тебя я надеюсь "messg" и "mssg" -- это одно и то же!? |
|||
|
||||
konekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.5.2008 Репутация: нет Всего: нет |
Спасибо за цикл. Видно что он идентичен моему. Messg=mssg, просто я не могу копировать исходники т.к. интернет подключен к другому компьютеру.
Но к сожалению, этот цикл тоже не работает. Так как я пишу с помощью Visual Studio 2008 и свой проект создавал как не Win32 а как EmptyProgect. У меня все работает если функцию Render() запихать в if, но должен работать в теле else и код от Supersedes тому наглядный пример. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
и свой проект создавал как не Win32 а как EmptyProgect
a где расположен цикл обработки? |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Перенеси функцию Render в обработку WM_PAINT - самый правильный вариант. ИМХО
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Supersedes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.7.2008 Репутация: нет Всего: нет |
Rickert, далеко не самый правильный вариант.
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Supersedes, утверждение без аргументов - сотресание воздуха.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Supersedes |
|
||||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.7.2008 Репутация: нет Всего: нет |
Rickert
Абсолютно с тобой согласен!! Читай что сам пишешь! Это сообщение отредактировал(а) Supersedes - 18.8.2008, 08:16 |
||||
|
|||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
А программисту разве нужно уже всё разжёвывать чтобы он понял, что отрисовка сцены OpenGL, после отрисовки самого окна - это логично
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Supersedes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.7.2008 Репутация: нет Всего: нет |
Rickert, во-первых я не уверен что konekt на самом деле достаточно опытный программист.
Во-вторых, если бы ты сам был хорошим программистом, то ты наверняка бы понял что именно хочет автор статьи! То что функцию render() надо запихнуть в WM_PAINT это по-моему и так понятно.. Тем не менее я думаю что автор статьи хотел чтобы данная фунция выполнялась постоянно и, соответственно постоянно отрисовывалась сцена. В данном случае изречение:
неуместно ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
У человека есть проблема - я предложил решение. Все остальные наши разговоры неуместны в этой теме, предлогаю продолжить через ЛС.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |