Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Вниз

Торможение DelphiX приложений под WindowsXP   Найти похожие ветки 

 
3d[Power]   (2003-04-10 19:19) [0]

Есть такая проблема, при использовании DXTimer, с интервалом 20 (50fps) в хп все это проседает до 32fps. Если таймер заменить на свой thread, то все ок, но это не помогает для оконных delphix программ.

Собственно вопрос: как ускорить (вернуть нормальную скорость (50fps)) оконным delphix приложениям под WinXP?


 
Darthman   (2003-04-10 19:47) [1]

Например отказаться от альфаблендинга.


 
Darthman   (2003-04-10 19:50) [2]

И вообще, я бы поостерегся от использования всякого рода таймеров в игрушках. Неправильно это все.


 
АФ   (2003-04-11 09:15) [3]

У меня еще хуже. Интервал в DXTimer установлен в 0. На некоторых ХР возникают очень сильные тормоза. Буквально 1fps. Это при том что компьютеры мощные с хорошими ускорителями.

Как побороть ?


 
Psibug   (2003-04-11 13:55) [4]

Сам свидетель того, о чём спрашиывает Повер - на машине друга это происходит. Это не просто 32 кадра вместо 50: всё как то плавно, медленно, словно в замедленном replay"е. Но нет мерцания экрана или чего-то вроде этого. может введёшь команду setiterationlength 1<Value<20 ,DefaultValue=20 и с помощью этой команды будут регулировать интервал таймера те, вроде этого несчастного, у кого эта трабла?
Любой неизвращённый таймер использует SetTimer/KillTimer.
А навороченые могут и свой поток создавать.
DXTimer, наверное тоже навороченый. VCLовский таймер использует для создаваемых таймеров создаваемыемые HWND (идентификаторы окон: 1 таймер - 1 окно).
>Dartman
Согласен насчёт таймеров. Но стиль надо соблюдать (это я о блендинге). Да и вообще, помоему, в NFK блендинг можно через консоль вырубить или через конфиг.
>АФ
Нельзя ставить таймер на 0. Это любые винды <censored>.См. ниже

Вот как обновляются свойства VCLовского таймера:

KillTimer(FWindowHandle, 1);
if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then
if SetTimer(FWindowHandle, 1, FInterval, nil) = 0 then
raise EOutOfResources.Create(SNoTimers);


По моему, надо было тебе, Повер, использовать while и Sleep (то. что я писал об этой процедуре в конференции winapi - это ошибка. Просто скорость работы OpenGL от одной машины к другой разнится более, чем у Direct3D).


 
Мор   (2003-04-13 03:34) [5]

А у меня так: если поставить интервал 0 - идут тормоза, а если 1 или выше - то скорость соответствует!



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
7-51532
Novenkij
2003-07-30 22:36
2003.10.16
как узнать hendle всех запущенных программ в системе


3-51151
paul_k
2003-09-24 13:34
2003.10.16
Синхронизация данных с адлресной книгой Outlook


6-51365
andrewxx
2003-08-21 16:24
2003.10.16
Indy POP3


14-51486
wl
2003-09-28 21:30
2003.10.16
где лежат клиенты форумов?


1-51212
Shoorik
2003-10-04 11:28
2003.10.16
О месте Delphi, среди систем разработки приложений.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский