 |
28.07.2010, 23:46
|
#31
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Бррр - никогда так не делал! Тоесть условно говоря мы пихаем куданибудь в форме Do Loop между ними делаем всё что надо а перед Loop ставим Invalidate()?
А чем нам мешает "перерисовка формы" ? Ну например у меня в программе раз в 70 мили секунд опрашивается клавиатура, раз в 40 проверяется физика а раз в тридцать на форму выводится новая картинка и всем хорошо...
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
28.07.2010, 23:52
|
#32
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Нет, никаких циклов в Windows.Forms
у тебя должна быть функция перерисовки окна:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
'код отрисовки
Invalidate()
End Sub
Сообщение от Лit}{Ъ
А чем нам мешает "перерисовка формы" ? Ну например у меня в программе раз в 70 мили секунд опрашивается клавиатура, раз в 40 проверяется физика а раз в тридцать на форму выводится новая картинка и всем хорошо...
|
Представь ситуацию, что твоему процессору и видеокарте не угнаться за таймером, если функция отрисовки будет слишком тяжелой  А при применении отрисовки в цикле будет выводиться столько кадров, на сколько хватит ресурсов компьютера.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.07.2010, 00:06
|
#33
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Я правельно понимаю что речь идёт о Form Events? Из них у меня есть только просто Paint... Хотя скорее всего реч идёт о чём то другом... А если так то получается мы каждый раз когда видим что форме вздумалось перерисоваться застовляем её нанести на себя нужную нам картинку?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
29.07.2010, 00:13
|
#34
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Да, но используя Invalidate() в конце функции перерисовки OnPaint мы заставляем ее перерисовываться постоянно, тратя на это свободные ресурсы системы для получения максимального количества кадров в секунду.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.07.2010, 00:15
|
#35
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Сообщение от pax
Представь ситуацию, что твоему процессору и видеокарте не угнаться за таймером, если функция отрисовки будет слишком тяжелой  А при применении отрисовки в цикле будет выводиться столько кадров, на сколько хватит ресурсов компьютера.
|
И тут я понял откуда взялось Fraps Past Second  ! А у меня получается сия величина была фиксированной!
Сообщение от pax
Да, но используя Invalidate() в конце функции перерисовки OnPaint мы заставляем ее перерисовываться постоянно, тратя на это свободные ресурсы системы для получения максимального количества кадров в секунду.
|
То есть при команде Invalidate() мы якобы говорим -" рисуйся как только сможеш"? И в следующий раз onPaint сработает как только ЦП компьютера достаточно освободится?
А В это время работают к примеру таймеры Физики и Опроса клавиатуры, а OnPaint втискивается между ними максимально возможное колличество раз?!
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
29.07.2010, 00:24
|
#36
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Invalidate() говорит форме, что ее область не действительна и ее нужно перерисовать. И когда она сможет, она ее перерисует.
Вот нашел в интернете довольно старые уроки, но может пригодятся для понятия общих принципов http://progs.biz/directx/direct3d/vb/vb01.aspx
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.07.2010, 00:34
|
#37
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Огромное спасибо! Вы раскрыли мне глаза на истину! Обязательно перепишу рейдринг на досуге.
Только до сих пор остаётся действительным вопрос о том как заставит VB не закрывать окно об ошиьке после завершения приложения. Проблема сейчас явно не в перерисовке (таймеры с запасом) да и на 6.0 это прикрасно фурычит.В прблесках окна с ошибкой я понял что он зависает на загруске информации однако что по этому поводу сообщает VB непонятно... Так как окно проподает с глаз долой..
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
29.07.2010, 00:36
|
#38
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
А В это время работают к примеру таймеры Физики и Опроса клавиатуры, а OnPaint втискивается между ними максимально возможное колличество раз?!
|
Тут еще такой казус может случиться... таймеры работают в отдельных потоках приложения и при этом может случиться перекрестная работа с одними и теми же переменными для отрисовки и изменения.
Если использовать цикл как в первом туторе, то можно рендерить постоянно кадры, а основываясь на времени вызывать методы обновления физики и игровой логики. Пример такого принципа - цикл с твинигом в Blitz3d. Там функция Update вызывается столько раз, сколько нужно для обеспечения выполнения обновления игры например 30 раз в секунду. а все остальное вермя выполняется рендеринг геометрии с интерполяцией по промежуточным положениям.
|
(Offline)
|
|
29.07.2010, 00:38
|
#39
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Сообщение от Лit}{Ъ
Огромное спасибо! Вы раскрыли мне глаза на истину! Обязательно перепишу рейдринг на досуге.
Только до сих пор остаётся действительным вопрос о том как заставит VB не закрывать окно об ошиьке после завершения приложения. Проблема сейчас явно не в перерисовке (таймеры с запасом) да и на 6.0 это прикрасно фурычит.В прблесках окна с ошибкой я понял что он зависает на загруске информации однако что по этому поводу сообщает VB непонятно... Так как окно проподает с глаз долой..
|
Для отладки работай для начала в оконном режиме и ставь где надо точки останова (слева от кода красные точки) для просмотра состояния переменных на разных шагах работы приложения. Да и возможно правильно составленный цикл отрисовки решит проблемы. Хотя взможно проблема в неверной инициализации графического режима... тут надо думать. Самый простой способ зарегистрировать ошибку в полноэкранном режиме - ставить блоки Try для ловли ошибок и писать их в файл.
|
(Offline)
|
|
29.07.2010, 00:48
|
#40
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Про точки вкурсе! Только вот зараза - Оконный режим диркт Х это как раз то с чем я не умею работать.... Мудрый 6.0. выводил ошибку в MSG BoX который не закрывается покане нажмёш - а тут... Пипец...
Чёрт! С точками тоже не помогает!
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
29.07.2010, 00:50
|
#41
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Пробуй блоки ловли исключений, вот пример: http://www.homeandlearn.co.uk/NET/nets5p4.html
т.е.:
Try
'Действие, которое может вызвать ошибку'
Catch ex As Exception
' если произошла ошибка между Try и Catch - ее регистрация (запись в файл или вывод в MessageBox)'
MessageBox.Show(ex.Message)
End Try
UPD: Решил проспамить пример работы с DirectDraw и сюда тоже http://gpwiki.org/index.php/DirectX:...NET:DX9:Basics
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.07.2010, 01:16
|
#42
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Помогло! 1 ошибкой меньше! Только без дебагинга с маркерами и просмотром значений будет туго. Чего компу может нехватать что он не может свернуть(развернуть) приложение?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
29.07.2010, 01:21
|
#43
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Для сворачивания надо чтобы окно могло выполнять оконные сообщения... попробуй нажимать сочетание клавиш Windows + D для сворачивания всех окон и потом переключения на студию.
Вообще попробуй организовать цикл так, как приведено в туторе по ссылке в посте 41. Там как раз бесконечный цикл и есть вызов Application.DoEvents(), который дает системе возможность обработки сообщений, в том числе и оконных. А я спать пошел.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.07.2010, 01:31
|
#44
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
До цикла даже не доходит! У меня походу компа на нужды студии не хватает... Сейчас я понял самую гениальную вещ изобретённую человеком MSG Box! Я при помощи него переменные отлеживаю. Ужассс...
Огромный сенкс за прмощ.
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
29.07.2010, 20:50
|
#45
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы с переводом
Ну как бы полноэкранный режим - это только маленькая часть возможностей, которые нужно реализовать правильно. Один раз понять в чем проблема, а далее будет все как по маслу. Тестировать конечно надо в оконном режиме и иметь возможность в любой момент перейти в полноэкранный.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:46.
|