OberonCore https://forum.oberoncore.ru/ |
|
Как изменить частоту Actions ? https://forum.oberoncore.ru/viewtopic.php?f=23&t=2667 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Понедельник, 31 Май, 2010 18:46 ] |
Заголовок сообщения: | Как изменить частоту Actions ? |
С частотой Services.Actions 50мс предел FPS ~ 16, а нужно 25. Подскажите, пожалуйста, есть ли простой способ регулировать частоту обновления Actions, или придется пользоваться циклами для этих целей? Кто нибудь решал подобную проблему? Код: MODULE MyFpstest
IMPORT Services, Fonts, Ports, Views, Properties, Models, Strings; TYPE Action = POINTER TO RECORD (Services.Action) END; View = POINTER TO RECORD (Views.View) END; VAR time: LONGINT; action: Action; font: Fonts.Font; fpsR: REAL; v: View; PROCEDURE (count: Action) Do; BEGIN fpsR := 1000/(Services.Ticks() - time); time := Services.Ticks(); Services.DoLater(action, Services.Ticks() + Services.immediately); Views.Update(v, TRUE); END Do; PROCEDURE (v: View) Restore (f: Views.Frame; l, t, r, b: INTEGER); VAR summ: ARRAY 100 OF CHAR; BEGIN Strings.RealToStringForm(fpsR, 7, 0, 0, " ", summ); f.DrawString (0, 50*f.dot, Ports.black, "fps = " + summ, font); END Restore; PROCEDURE Start*; BEGIN font := Fonts.dir.This("Arial", 15*Ports.point, {}, Fonts.normal); NEW(v); Views.OpenAux(v, "FPS test"); NEW(action); Services.DoLater(action, Services.now) END Start; BEGIN END MyFpstest. |
Автор: | Иван Денисов [ Среда, 03 Август, 2011 18:31 ] |
Заголовок сообщения: | Re: Как изменить частоту Actions ? |
В HostMenus есть переменная Цитата: idlePeriod = 50; (* ms *) но, к сожалению, ее изменение ни приводит к более частому обновлению Services.Action, поэтому пока придуман только ручной разгон, более частый вызов Services.actionHook.Step; Этот прием описан тут.
|
Автор: | Илья Ермаков [ Среда, 03 Август, 2011 19:52 ] |
Заголовок сообщения: | Re: Как изменить частоту Actions ? |
Так 50 мс - это период главного цикла приложения в Винде... Быстрее никак. |
Автор: | Александр Ильин [ Среда, 03 Август, 2011 19:57 ] |
Заголовок сообщения: | Re: Как изменить частоту Actions ? |
Илья Ермаков писал(а): Так 50 мс - это период главного цикла приложения в Винде... Быстрее никак. Say what?! А пруфлинк?
|
Автор: | Илья Ермаков [ Среда, 03 Август, 2011 20:22 ] |
Заголовок сообщения: | Re: Как изменить частоту Actions ? |
Утверждение следует понимать так, что для цикла WHILE WinApi.GetMessageW(msg, 0, 0, 0) # 0 DO .... END в "расслабленном" состоянии (идут только тики таймера) период обращения будет где-то порядка 50 мс. Или примерно 20-25 раз за секунду. Быстрее винда не обеспечивает. Таков же и период между двумя вызовами Services.actionHook.Loop, который выполняется из главного цикла графического ББ. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |