![]() |
|
Модераторы: Rickert |
![]()
|
|
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Помогите разобратся в коде, позволяющем определить FPS окна и в цикле - сколько раз этот цикл проходит? Это и есть FPS? И как это работает... Хотя бы коментарие не моглы бы на русском расставить плиз.. Сразу скажу, что понимаю тока обработку сообщений и описание класа для окна
|
|||
|
||||
| Exekutor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: нет Всего: 4 |
Похоже, что здесь тока код обработки сообщений и, собсно, класа окна.
Это сообщение отредактировал(а) Exekutor - 20.4.2006, 15:16 -------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Это я и сам знаю, а с какой скоростью бегает этот цикл??? Тут же от таймера ничего не зависит. И вообще что такое это ФПС и зачем оно нужно? И как работает?
|
|||
|
||||
| Exekutor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: нет Всего: 4 |
FPS - это кол-во кадров в секунду. В данном случае, сколько раз происходит перерисовка окна в секунду. Скорость цикла зависит от скорости проца.
-------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Ага, понятно, значит цикл бегает сам по себе, а эти ФПС только отслеживает сколько раз он бегает, и не влияен на скорость его бега?
Тоесть если я уберу вообще строки ФПС из цикла - скорость его от этого не изменится? или этот вызов ФПС тормозит цикл (служит в качестве задержки) ? Это сообщение отредактировал(а) DragonFire - 21.4.2006, 08:35 |
|||
|
||||
| Exekutor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: нет Всего: 4 |
ну, конечно, дополнительные вычисления тормозят цикл, но это как побочное явление. FPS - это просто число, характеризующее среднее число вывода кадров в секунду. Ясли ты их уберешь то скорость цикла изменится не значительно.
Сам цикл - это стандартный цикл обработки сообщений, присущий любой программе винды. Это сообщение отредактировал(а) Exekutor - 21.4.2006, 09:14 -------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Значит ФПС вводят в программу только для проверки быстроты работы?
|
|||
|
||||
| Exekutor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: нет Всего: 4 |
Ну, что-то вроде. FPS актуальна в играх и проч. что связано с 3D графикой
-------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
А можешь объяснить смысл таймера, констант (для ФПС) и функций ФПС в игровом цикле?
|
|||
|
||||
| Exekutor |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: нет Всего: 4 |
Могу предположить, что FPS_INTERVAL означает число миллисекунд, за период временип которых, подсчитываются кол-во кадров.
FPS_TIMER - это параметр сообщения WM_TIMER. Вот, собственно, и расчет FPS:
похоже, что здесь происходит вычисление среднего кол-ва тиков. Секунды.
-------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
||||
|
|||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Ну это все общие слова, а кто может конкретно описать механихм работы?
|
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
ФПС часто используется для контроля игровых процессов, зависящих от времени.
Например, есть объект, который должен двигаться со скоростью 1м/с. Например, у тебя на компе прога отрисовывает 100 кадров в секунду. Тогда ты можешь в каждом кадре сдвигать объект на 1см и за секунду он переместится ровно на один метр. А на другом компе та же прога отрисовывает к примеру 200 кадров - за секунду объект сдвинется не на метр , а на два. Это хреново. Вот чтобы такого небыло, вычисляется время, затрачиваемое на цикл, вычисляется на какое расстояние объект должен переместиться за это время, и объект перемещается. Применяется такой контроль не только в 3Д, но и везде где приходится что-то анимировать. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Вот, это уже яснее...
А теперь можно поконкретнее, как это делается - что зачем вызывается в программе. |
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
DragonFire, это...
у меня на двоих мозга не хватит, так что если ты свой использовать не собираешься, то лучше забей сразу... SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil); - судя по имени инициализирует таймер GetTickCount() - опять же судя по имени возвращает текущее время все остальные вычисления - LastTime :=ElapsedTime; ElapsedTime :=GetTickCount() - DemoStart; ElapsedTime :=(LastTime + ElapsedTime) DIV 2; - нужны только для того чтобы получать среднее время прохода цикла В заголовок только кол-во проходов цикла выводится. Зачем константы и что такое FPSCount нужно спросить у того кто этот код писал... --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
А нельзя сделать просто так: каждый раз при прохождении цикла повышать счетчик, а каждый раз в секунду его выводить на экран и обнулять, вроде тоже самое?
|
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |