Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Visual Basic

Ответ
 
Опции темы
Старый 28.07.2010, 19:46   #31
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Бррр - никогда так не делал! Тоесть условно говоря мы пихаем куданибудь в форме Do Loop между ними делаем всё что надо а перед Loop ставим Invalidate()?

А чем нам мешает "перерисовка формы" ? Ну например у меня в программе раз в 70 мили секунд опрашивается клавиатура, раз в 40 проверяется физика а раз в тридцать на форму выводится новая картинка и всем хорошо...
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 19:52   #32
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Нет, никаких циклов в Windows.Forms
у тебя должна быть функция перерисовки окна:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)

        
'код отрисовки


        Invalidate()
    End Sub 
Сообщение от Лit}{Ъ Посмотреть сообщение
А чем нам мешает "перерисовка формы" ? Ну например у меня в программе раз в 70 мили секунд опрашивается клавиатура, раз в 40 проверяется физика а раз в тридцать на форму выводится новая картинка и всем хорошо...
Представь ситуацию, что твоему процессору и видеокарте не угнаться за таймером, если функция отрисовки будет слишком тяжелой А при применении отрисовки в цикле будет выводиться столько кадров, на сколько хватит ресурсов компьютера.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (28.07.2010)
Старый 28.07.2010, 20:06   #33
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Я правельно понимаю что речь идёт о Form Events? Из них у меня есть только просто Paint... Хотя скорее всего реч идёт о чём то другом... А если так то получается мы каждый раз когда видим что форме вздумалось перерисоваться застовляем её нанести на себя нужную нам картинку?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 20:13   #34
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Да, но используя Invalidate() в конце функции перерисовки OnPaint мы заставляем ее перерисовываться постоянно, тратя на это свободные ресурсы системы для получения максимального количества кадров в секунду.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (28.07.2010)
Старый 28.07.2010, 20:15   #35
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Проблемы с переводом

Сообщение от pax Посмотреть сообщение
Представь ситуацию, что твоему процессору и видеокарте не угнаться за таймером, если функция отрисовки будет слишком тяжелой А при применении отрисовки в цикле будет выводиться столько кадров, на сколько хватит ресурсов компьютера.
И тут я понял откуда взялось Fraps Past Second ! А у меня получается сия величина была фиксированной!


Сообщение от pax Посмотреть сообщение
Да, но используя Invalidate() в конце функции перерисовки OnPaint мы заставляем ее перерисовываться постоянно, тратя на это свободные ресурсы системы для получения максимального количества кадров в секунду.
То есть при команде Invalidate() мы якобы говорим -" рисуйся как только сможеш"? И в следующий раз onPaint сработает как только ЦП компьютера достаточно освободится?

А В это время работают к примеру таймеры Физики и Опроса клавиатуры, а OnPaint втискивается между ними максимально возможное колличество раз?!
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 20:24   #36
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Invalidate() говорит форме, что ее область не действительна и ее нужно перерисовать. И когда она сможет, она ее перерисует.

Вот нашел в интернете довольно старые уроки, но может пригодятся для понятия общих принципов http://progs.biz/directx/direct3d/vb/vb01.aspx
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (28.07.2010)
Старый 28.07.2010, 20:34   #37
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Огромное спасибо! Вы раскрыли мне глаза на истину! Обязательно перепишу рейдринг на досуге.

Только до сих пор остаётся действительным вопрос о том как заставит VB не закрывать окно об ошиьке после завершения приложения. Проблема сейчас явно не в перерисовке (таймеры с запасом) да и на 6.0 это прикрасно фурычит.В прблесках окна с ошибкой я понял что он зависает на загруске информации однако что по этому поводу сообщает VB непонятно... Так как окно проподает с глаз долой..
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 20:36   #38
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

А В это время работают к примеру таймеры Физики и Опроса клавиатуры, а OnPaint втискивается между ними максимально возможное колличество раз?!
Тут еще такой казус может случиться... таймеры работают в отдельных потоках приложения и при этом может случиться перекрестная работа с одними и теми же переменными для отрисовки и изменения.
Если использовать цикл как в первом туторе, то можно рендерить постоянно кадры, а основываясь на времени вызывать методы обновления физики и игровой логики. Пример такого принципа - цикл с твинигом в Blitz3d. Там функция Update вызывается столько раз, сколько нужно для обеспечения выполнения обновления игры например 30 раз в секунду. а все остальное вермя выполняется рендеринг геометрии с интерполяцией по промежуточным положениям.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 20:38   #39
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Сообщение от Лit}{Ъ Посмотреть сообщение
Огромное спасибо! Вы раскрыли мне глаза на истину! Обязательно перепишу рейдринг на досуге.

Только до сих пор остаётся действительным вопрос о том как заставит VB не закрывать окно об ошиьке после завершения приложения. Проблема сейчас явно не в перерисовке (таймеры с запасом) да и на 6.0 это прикрасно фурычит.В прблесках окна с ошибкой я понял что он зависает на загруске информации однако что по этому поводу сообщает VB непонятно... Так как окно проподает с глаз долой..
Для отладки работай для начала в оконном режиме и ставь где надо точки останова (слева от кода красные точки) для просмотра состояния переменных на разных шагах работы приложения. Да и возможно правильно составленный цикл отрисовки решит проблемы. Хотя взможно проблема в неверной инициализации графического режима... тут надо думать. Самый простой способ зарегистрировать ошибку в полноэкранном режиме - ставить блоки Try для ловли ошибок и писать их в файл.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 20:48   #40
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Про точки вкурсе! Только вот зараза - Оконный режим диркт Х это как раз то с чем я не умею работать.... Мудрый 6.0. выводил ошибку в MSG BoX который не закрывается покане нажмёш - а тут... Пипец...

Чёрт! С точками тоже не помогает!
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 20:50   #41
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Пробуй блоки ловли исключений, вот пример: 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
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (28.07.2010)
Старый 28.07.2010, 21:16   #42
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Помогло! 1 ошибкой меньше! Только без дебагинга с маркерами и просмотром значений будет туго. Чего компу может нехватать что он не может свернуть(развернуть) приложение?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 28.07.2010, 21:21   #43
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Для сворачивания надо чтобы окно могло выполнять оконные сообщения... попробуй нажимать сочетание клавиш Windows + D для сворачивания всех окон и потом переключения на студию.

Вообще попробуй организовать цикл так, как приведено в туторе по ссылке в посте 41. Там как раз бесконечный цикл и есть вызов Application.DoEvents(), который дает системе возможность обработки сообщений, в том числе и оконных. А я спать пошел.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (28.07.2010)
Старый 28.07.2010, 21:31   #44
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 23.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

До цикла даже не доходит! У меня походу компа на нужды студии не хватает... Сейчас я понял самую гениальную вещ изобретённую человеком MSG Box! Я при помощи него переменные отлеживаю. Ужассс...

Огромный сенкс за прмощ.
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 29.07.2010, 16:50   #45
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,470
Написано 2,933 полезных сообщений
(для 5,168 пользователей)
Ответ: Проблемы с переводом

Ну как бы полноэкранный режим - это только маленькая часть возможностей, которые нужно реализовать правильно. Один раз понять в чем проблема, а далее будет все как по маслу. Тестировать конечно надо в оконном режиме и иметь возможность в любой момент перейти в полноэкранный.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (16.09.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 22:21.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com