Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FPS и потоки [Delphi, FuckOS]


mrAld ©   (2003-11-29 00:29:00) 

Странно, запуская даже пустое приложение (без загрузки экрана) я получаю максимум 151 fps (OpenGL), тогда как загруженная квака даёт мне под 200. Как там организован игровой поток? Я делаю синхронизацию по мультимедийному таймеру, приложение работает синхронно, но почему так медленно??? И ещё. Добавляю плоские тайлы на сцену с низким качеством текстуры (штук 50, больших и маленьких), и fps падает аж до 30! Это нормально? Если есть какие-то способы рационального отображения, поделитесь плизз. А то фигня какая-то получается!


Unknown user   (2003-12-05 18:48:00) [1]

2 mrAld. Откажись от дельфовских принципов -таймеров, OnIdle и т. д. -в серъезных OGL приложениях это не используют. Строй программу как это делается в С - при старте запускается функция WinMain, которая представляет собой обработчик всех событий поступающих в главное окно приложения и обрабатывай эти события пока не дождешься WM_QUIT.
А вертивальная синхронизация у тебя все-таки включена. И частота кадров у тебя стоит 150. Я прав. Чтобы отключить зайди в свойствах экрана-дополнительно-GeForce 2...-параметры OGL-верт. синхронизация-всегда выкл.
И про тайлы, скажи точно формат текстур, кол-во полигонов в сцене и какой функцией ты эти текстуры накладываешь.


Unknown user   (2003-12-05 18:48:00) [2]

2 mrAld. Откажись от дельфовских принципов -таймеров, OnIdle и т. д. -в серъезных OGL приложениях это не используют. Строй программу как это делается в С - при старте запускается функция WinMain, которая представляет собой обработчик всех событий поступающих в главное окно приложения и обрабатывай эти события пока не дождешься WM_QUIT.
А вертивальная синхронизация у тебя все-таки включена. И частота кадров у тебя стоит 150. Я прав. Чтобы отключить зайди в свойствах экрана-дополнительно-GeForce 2...-параметры OGL-верт. синхронизация-всегда выкл.
И про тайлы, скажи точно формат текстур, кол-во полигонов в сцене и какой функцией ты эти текстуры накладываешь.


hexone   (2003-12-01 12:33:00) [3]

Возьми http://nehe.gamedev.net
lesson01 посмотри как там организован цикл обработки сообщений окна. Так как там - это единственный и неповторимый правильный вариант.


mrAld   (2003-12-01 02:27:00) [4]

Я пробовал OnIDLE. При загруженности сцены и уменьшении fps уменьшается скорость игрового времени. Приложение замедляется, тогда как в реале допускаю лишь тормоза, а не замедление времени. А по скорости что таймер, что Idle - одна }{рень. Мне интересно, как делают знающие люди? И реально API быстрее VCL, или это легенда? Простите за ламерский вопрос, но я долгое время был теоретиком и только сейчас занялся практикой :)


Sapersky   (2003-11-30 23:29:00) [5]

Я делаю синхронизацию по мультимедийному таймеру

Синхронизацию С ЧЕМ? И зачем? В любом случае, мультимедийный таймер на малых интервалах - порядочный тормоз (в смысле - других тормозит), т.к. выделяет себе поток с максимальным приоритетом. И довольно приличную часть процессорного времени твоя программа тратит не на то, чтобы рисовать что-то, а на высчитывание - когда она должна это делать.

Проще и быстрее крутить всё в основном цикле. Или, в случае VCL, в OnIdle с Done=False.


mrAld   (2003-11-30 21:21:00) [6]

Geforce 2 MX 200 32 mb
Аппаратная поддержка OpenGL, но расширенных функций не знаю, т.к. никогда их не использовал. Как отключить синхронизацию с обратным ходом луча? И как в OpenGL реализуется частичная прорисовка экрана?
ЗЫ: мне бы знать, как правильно организовать игровой поток


MrAngel   (2003-11-29 22:10:00) [7]

Синхронизация луча в данном случае не причём. Тут что то другое. Кстати какая карточка ?


Gandalf   (2003-11-29 19:29:00) [8]

Синхронизацию с обратным ходом луча отключи. В ква нет синхронихации - в играх идет принцип рисуй так быстро, как только можещь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо