Войти
ПрограммированиеФорумГрафика

Что лучше VSYNC или неограниченное ФПС (4 стр)

Страницы: 13 4 5 69 Следующая »
#45
13:27, 8 ноя. 2011

ITIhonov
> при высокой скорости объектов
высокая это какая? 200 единиц это много? При расчёте перемещения
x += dt * speed * angle

т.к. именно с такой скоростью летают объекты и они подёргиваются, а если планета в бэкграунде пролетает со скоростью 50 тогда всё плавно.


#46
13:39, 8 ноя. 2011

Opts
> 200 единиц это много

200 единиц чего? :)

если в соседних кадрах у вас изображения объекта не пересекаются, скажем, на половину - то глаза не воспримут это как движение. Визуально у вас объект моментально "телепортировался" с одного места на другое - потому что промежуточного движения графически не было.

#47
13:44, 8 ноя. 2011

Opts
> вы ещё забыли добавить два бэка в размере 1024/768, плюс каждый спрайт имеет
> рандомную скорость угол и масштаб.
Давай на "ты".
У меня один бэк в проверке, скорости вообще тут роли не играют. А масштаб? Это тоже не затормозит при аппаратном ускорении, еслим только ты не скейлишь на увеличение.
Opts
> втихаря поставить 300, возможно это и не правильно
Так значит видюшка тянет 300. А на 60 дёргается - это где-то у тебя ошибка.
Ты попробуй оставить один спрайт, если он всё равно будет дёргаться, значит нужно где-то искать, что сделано неправильно.

#48
14:08, 8 ноя. 2011

и наверняка это "неправильно" в расчете времени между кадрами

#49
14:13, 8 ноя. 2011

Mikle
> Ты попробуй оставить один спрайт
так в том то и дело что уже пробовал, когда отключаю всю дополнительную графику, скажем из 250 спрайтов ставлю 10, тогда 60 фпс за глаза хватает, чтобы комфортно играть. И ничего не тормозит, и ничего не дёргается, но как только возвращаю весь графический контент обратно, то и дёрганье возвращается. Поэтому и решил, что слишком тяжёлый рендер.

> А масштаб?
от 0.2 до 3.0 рандомно.

ITIhonov
> 200 единиц чего? :)
ну а в чём мы указываем скорость в игре, когда смещение рассчитываем по x += dt * speed * angle

#50
14:16, 8 ноя. 2011

bool
> в расчете времени между кадрами
был бы очень благодарен, если бы кто посмотрел как рассчитывается ФПС в HGE и сказал
да там всё правильно рассчитывается
нет, там вообще фигня полная и куча погрешностей
я не смогу так проанализировать.

#51
14:17, 8 ноя. 2011

Opts
> ну а в чём мы указываем скорость в игре, когда смещение рассчитываем по x += dt
> * speed * angle

в попугаях.

я же говорю про движение в экранных координатах, в размерах растеризованного изображения объекта. Перемещение в 0.5 размера между соседними кадрами - комфортная скорость.

#52
14:22, 8 ноя. 2011

мне просто непонятно как может при 60 фпс хватать скорости обновления для 1 объекта и не хватать для 10. оно в разных потоках и время разное? получается что апдейт не зависит от времени и тормозит при 10 объектах или как? на мой взгляд 60 фпс это что для 10 объектов, что для 100.

#53
14:24, 8 ноя. 2011

Opts
> был бы очень благодарен, если бы кто посмотрел как рассчитывается ФПС в HGE и
> сказал

а вы hge->System_SetState(HGE_FPS, HGEFPS_VSYNC); делаете или как?

#54
14:51, 8 ноя. 2011

А в чем профит делать по 300 фпс, если у монитора частота обновления ниже?
Зачем напрягать видюху во имя того, что монитор не покажет?

#55
14:58, 8 ноя. 2011

cherepets
> А в чем профит делать по 300 фпс, если у монитора частота обновления ниже?
> Зачем напрягать видюху во имя того, что монитор не покажет?

вобще-то покажет. выражается это в tearing. при 300 fps наверное даже что-то типа motion blur будет при движении по вертикали вниз. :)

#56
15:11, 8 ноя. 2011

cherepets
> А в чем профит делать по 300 фпс, если у монитора частота обновления ниже?
задайте этот вопрос разработчикам
Эхо печали
именем короля
Герои эллады
видимо для них профит был.

bool
> на мой взгляд 60 фпс это что для 10 объектов, что для 100.
ок, значит ошибка у меня в коде, буду искать.

>а вы hge->System_SetState(HGE_FPS, HGEFPS_VSYNC); делаете или как?
вчера проверял при 60, VSYNC не помню результат, сегодня проверю ещё раз.

#57
15:17, 8 ноя. 2011

А время как получаешь, hge->Timer_GetDelta();? ну и дополнительно переключи процесс на 1 ядро, SetProcessAffinityMask(GetCurrentProcess(), 1);

#58
15:23, 8 ноя. 2011

bool
> А время как получаешь
да hge->Timer_GetDelta().

> переключи процесс
ок, попробую. Но я думаю, что переписывать код всё равно придётся.

#59
15:28, 8 ноя. 2011

Может речь о другом? Есть у DirectX такая странность - иногда действительно дёргается картинка, хоть код перепроверен, наверняка без багов, нагрузка на GPU небольшая. Наблюдается это далеко не на всех компьютерах.
На DirectX8 был такой способ пофиксить это - локаем каждый кадр бэкбуфер и читаем оттуда 1 пиксель. На DirectX9 это перестало помогать, но часто помогает Sleep(0) в цикле рендера. На моей игре AoS2 и это не помогало, пока я не подключил звук (DirectSound), и баг пропал сам собой, я пробовал выключать звук - опять рывки.

Страницы: 13 4 5 69 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.