Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2011, 18:00   #11
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
FPS - показатель того, сколько раз в секунду система успевает обработать и вывести на экран сцену. Если я искусственно введу стробирование в монитор на уровне 5 Гц, это не будет означать, что в данный момент 5 fps.
Это правда.

Теперь о предыдущем посте.
1) Это так
2) Зависит, если, например, видеокарта встроенная, то процессор может взять на себя отрисовку (не аппаратно, конечно, софтварно). Или если не хватает мощности видеокарты. Но тут уже зависит от системы.
3) Да, но пока сцена не просчитается, она не может быть отрисована (у меня это пока в одном цикле, что, конечно, неправильно). Поэтому количество пересчётов, а значит, и отображений за секунду зависит от скорости просчёта сцены, т.е. от мощности процессора.
4) Неправда. Beermonza объяснил это.
5) Да. Но у того моего друга и видюха очень мощная.
6) Как я уже сказал, поможет - система перенесёт расчёт сцены на процессор.
7) Это да.
anyx вне форума Ответить с цитированием
Старый 30.01.2011, 22:18   #12
Heymdall
 
Регистрация: 19.01.2011
Сообщений: 3
По умолчанию fps

что бы посчитать fps счетчик времени нужен грамотный,
я пишу на delphi и там функции типа
gettickcount или now в вопросе fps никак не помогут.

что за у вас функция timeGetTime() я не знаю.
наверняка это функция производная из системного таймера как и gettickcount.

gettickcount не может нарезать время по 0,5мс, 1 мс или 5 мс, только кратными кусками по 15-20 мс. отсюда и ваш постоянный fps в 60pfs. функции системного таймера для работы с fps не годятся.

предлагаю использовать rdtsc для замера времени между кадрами и также в зависимости от этого времени формировать приращение движущихся объектов, чтобы скорость движения объекта была постоянная во времени, например = 2 радиан/сек и не зависела от fps.
выкладываю пример,

там в константах нужно вам проставить частоту вашего процессора в константе, fps выводится раз в 1/5 секунды в заголовке окна.
свои трехмерные вещи делаю таким методом.
Вложения
Тип файла: rar Ex27_5.rar (214.4 Кб, 25 просмотров)
Heymdall вне форума Ответить с цитированием
Старый 31.01.2011, 15:47   #13
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
7)Если видеокарта очень сильная,то она может компенсировать слабый процессор.
С чего это? Видеокарта занимается обработкой графики, а процессор расчетами.
Как например видеокарта поможет слабому процессору не успевающему обрабатывать большое количество физических объектов? Разве что CUDA...
А весь fps>~1000 фейковый и при небольшом увеличении нагрузки он резко падает.
Вадим Буренков вне форума Ответить с цитированием
Старый 31.01.2011, 16:50   #14
Андрей 93
Люблю жизнь
Форумчанин
 
Аватар для Андрей 93
 
Регистрация: 01.12.2009
Сообщений: 193
По умолчанию

Изначально графикой занимался процессор. А потом с него сняли эту обязанность и возложили на видеокарту. Но процессор не разучился этого делать и помогает видеокарте, когда она не справляется. Но видеокарта не помогает процессору, как сказал Вадим Буренков. Вот такая сказка
Не стыдно не уметь, стыдно не учиться.
Андрей 93 вне форума Ответить с цитированием
Старый 31.01.2011, 17:16   #15
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Heymdall Посмотреть сообщение
предлагаю использовать rdtsc для замера времени между кадрами и также в зависимости от этого времени формировать приращение движущихся объектов, чтобы скорость движения объекта была постоянная во времени, например = 2 радиан/сек и не зависела от fps.
выкладываю пример,

там в константах нужно вам проставить частоту вашего процессора в константе, fps выводится раз в 1/5 секунды в заголовке окна.
свои трехмерные вещи делаю таким методом.
Не думаю, что ваш способ эффективней, чем использование GetTickCount. Ведь нужно знать частоту процессора на кождом компе, на котором должна запускаться игра. Более того, разные процессоры могут иметь одинаковую частоту, но время выполнения команд может отличаться (например, я думаю, что Intel быстрее AMD с той-же частотой, хоть и незначительно). И уж наверняка ваш способ не работает на многоядерных процессорах.

С другой стороны, если, даже под влиянием этих факторов, погрешность незначительная, то ей можно принебречь.
anyx вне форума Ответить с цитированием
Старый 31.01.2011, 19:53   #16
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Если выводом сцены занимается видеокарта, и это не типичное VCL с ее тормозностью и вообще заторможенными процессами, через заднепроходное отверстие, то достаточно простого Inc(t), а в обработке сцены в самом конце t := 0; и вывод текста fps на экран. Моя видеокарта показывает до 480 fps, но в основном в районе 200, в худшем случае 70-80 fps. А вот на ноутбуке (Core 2 Duo 1,8GHz) с его встроенной видеокартой Intel X3100, как не старайся, не более 64, виной тому скорее всего ограничение, которое снимать я бы не рекомендовал.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 31.01.2011, 22:54   #17
k3rn3l
Пользователь
 
Регистрация: 09.01.2011
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Heymdall Посмотреть сообщение
там в константах нужно вам проставить частоту вашего процессора в константе, fps выводится раз в 1/5 секунды в заголовке окна.
Да, но у вас рендерер вызывается в цикле(т.е. непрерывно), а у меня все-таки имеются промежутки времени между кадрами. Например, если игрок не совершает никаких манипуляций с клавиатурой и мышью, то и рендерер не вызывается => нужно находить еще разницу между временем завершения рендерера и временем следующего входа в рендерер, и фиксировать это время как если бы оно использовалось для отрисовки кадра, затем делить его на время выполнения процедуры рендеринга, а результат приплюсовывать к FPS
Хотя самой простой реализацией нахождения FPS было бы использование в таймере с интервалом в 1 с такой формулы:
FPS = 1 / время выполнения рендерера

зы минусы rdtsc объяснил anyx, поэтому задумываюсь об использовании QueryPerformanceCounter, хотя и она не безгрешна (оверхед около 2 мкс)
k3rn3l вне форума Ответить с цитированием
Старый 03.02.2011, 14:34   #18
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Beermonza, уточню свой ответ. FPS частично зависит от монитора. Когда я играл в Crysis на старом мониторе, FPS было ~24 FPS,когда играл на новом - ~30 FPS.
Продолжаем дискуссию, anyx.
1) Значит, подсчёт FPS ведётся неправильно.
2) Уточню. Уровень FPS не зависит от процессора, если они примерно равной силы, т.е. и процессор приличный и видеокарта тоже. Ежели Между ними большая разница - то зависит.
3) Вот именно, от процессора зависит лишь скорость просчёта сцены. А если, например, процессор у нас Core i7, а видеокарта уровня GeForce FX 5200? В таковом случае сцены будут просчитываться очень быстро, но они просто не будут успевать отрисовываться- в таковом случае игра будет подвисать.
4) Уточнил в начале поста.
5) Добавлю. От видеокарты зависит скорость отрисовки сцен.
6) Так расчётом сцены и так занимается процессор! Видеокарта занимается отрисовкой. Это только в DirectX 11 появилась функция, позволяющая переложить часть расчётов на видеокарту. А для процессора отрисовать сцену даже софтверно займёт очень много времени.
7) Разногласий нет.
Теперь обращаюсь к Вадиму Буренкову. CUDA доступна лишь на NVIDIA видяхах. А что вы будете делать с Radeon-видеокартами? Конечно, у AMD есть Brook+, но оно пока не очень развито да и не для этого оно.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.02.2011, 19:07   #19
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Beermonza, уточню свой ответ. FPS частично зависит от монитора. Когда я играл в Crysis на старом мониторе, FPS было ~24 FPS,когда играл на новом - ~30 FPS.
Очевидно, кроме монитора были внесены еще какие-то изменения, или видеокарта вынималась и вставлялась уже с лучшим контактом шины, или просто некорректное сравнение на разных сценах в игре. Монитор никак не может влиять на количество fps, он не управляет видеокартой, а только принимает пакет обновления (для ЖК) или постоянный импульсный сигнал по RGB-составляющим, и видеокарта, извините, плевать хотела, что с монитором и какой он. Т.е. говорить о влиянии монитора на fps видеокарты, тоже самое, что говорить о влиянии телевизора на скорость передачи телерадиостанции.

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

_-Re@l-_, это хорошо, что ты отстаиваешь свою точку зрения, это правильно, ...когда услышишь достаточное количество доводов чтобы переменить ее, тебя никто меньше уважать не станет, ...это форум, где любая мысль имеет право на жизнь.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 04.02.2011, 19:32   #20
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

На процессоре обычно считаю физику, матрицы трансформации(projection*world*view ), логику...
На видеокарте, различные трансформации вершин и цвет
По поводу расчетов не видеокарте, есть CUDA, Stream, OpenCL, шейдеры(вершинные, пиксельные, геометрические + куча еще всяких)
Насчет FPS, тема ооочень заезженная, есть понятие вертикальной синхронизации, видеокарта ждет пока кадр полностью отрисуется на мониторе и только потом начинает рисовать новый, при отключении видеокарта не ждет и формирует кадры на полной катушке и шлет их монитору не дожидаясь отрисовки старого кадра, поэтому можно наблюдать не очень хороший эффект(1/3 монитора старый кадр, 1/3 новый, 1/3 совсем новый, например), есть еще такая штука как формирование зарание нескольких кадров, не люблю эту штуку, из-за нее курсор в игре не успевает за системным курсором(часто бесит в играх тормозные курсоры при низком fps, хотя бы опцию добавляли)...
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL проблема с подсчетом FPS AS10 Мультимедиа в Delphi 4 15.09.2009 21:17
Лимиты FPS? VintProg Gamedev - cоздание игр: Unity, OpenGL, DirectX 28 07.09.2009 21:49
Как улучшить fps ? minatavr84 Компьютерное железо 2 26.03.2009 23:59
FPS Creator SaiLight Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 12.01.2009 09:57
Почему кп показывает низкий fps??? Samec_92 Компьютерное железо 11 18.12.2008 20:38