Тема: Тени в Xors3d
Показать сообщение отдельно
Старый 11.02.2011, 23:45   #22
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Тени в Xors3d

Схема ограничения частоты обновления такая:
Const FPS%    = 60
Global period# = 1000 / FPS
Global time%   = MilliSecs() - period
Global Ticks#, elapsed%
While AppRunning()
	nFPS_Int = xGetFPS()
	Repeat
		elapsed = MilliSecs() - time
	Until elapsed
	Ticks = elapsed / period

	For k% = 1 To Ticks
		time = time + period
		GameLogicUpdate() ; тут обновляется вся логика
		xUpdateWorld()      ; тут надо пробовать. Возможно стоит вынести за пределы ограничивающего цикла
	Next
	
	xRenderWorld()
	xFlip()
Wend
End
Вообще подобного кода на оффсайте блитца завались. Правда некоторый может глючить. Не особо разбирался в причинах.

Можно еще твиннинг вкрутить, для того чтобы анимация оставалась плавной при низкой частоте обновления логики.

Но во всяких демках с большим ФПС проблема все равно останется, потому что xRenderWorld() все равно каждый кадр вызывается. Тогда его или в ограничивающий цикл надо засунуть, что перечеркнет весь смысл твиннинга. Или просто delay(2) вставить.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
Amatsu (11.02.2011), St_AnGer (12.02.2011)