Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

Торможение 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
1-51277
asteriks
2003-10-06 20:16
2003.10.16
SIM-карты


1-51224
@Ujin
2003-10-03 18:20
2003.10.16
Интерфейс для TForm


14-51497
Тумар
2003-09-27 07:48
2003.10.16
Надо же какие эти америкашки ....


14-51456
Brahman
2003-09-29 17:25
2003.10.16
Перевоплощение:)


1-51234
Буфер обмена
2003-10-03 14:32
2003.10.16
Clipboard.AsText - белеберда получается