2016-02-19 2 views
-2

В настоящее время я пишу двигатель SDL2, и он работает довольно хорошо до сих пор, но есть одна проблема, которую SDL2 не может решить: приличный таймер. Прямо сейчас, он использует таймер по умолчанию SDL2, но он поддерживает только миллисекунду; и это не очень хорошо для измерения FPS. Основная проблема заключается в том, что между 500FPS и 1000FPS нет ничего, поэтому это одно или другое. Очевидно, потенциальные геймеры хотели бы что-то более точное, чем это, и получение точных средних из этих чисел почти невозможно.C++ Кросс-платформенный наносекундный/микросекундный таймер?

Итак, мой вопрос в том, есть ли библиотеки часов, которые могут обеспечить измерение времени на наносекунду/микросекунду (желательно, первое) на Windows, Mac и Linux? (Может быть, даже Android и iOS, но это немного растягивается.)

Если нет, существуют ли разные библиотеки для каждой ОС, я мог бы просто #if WINDOWS или что бы еще получить наносекундную/микросекундную синхронизацию?

EDIT: В комментарии указывалось, что здесь должна быть какая-то дополнительная информация, поэтому я использую C++ 14, а также буду на Mac и Linux. В Windows я использую MSVC (Visual Studio), и я планирую использовать XCode на Mac и не слишком уверен в Linux. Будет как друг.

+0

Вы используете 'C++ 11' или более поздней версии? –

+0

@MohitJain Я добавил дополнительную информацию к сообщению. – Vulkan

+0

Вы можете выбрать решение из: http://stackoverflow.com/questions/2808398/easily-measure-elapsed-time –

ответ

0

В последнее время я изучаю эту новую библиотеку, и я думаю, что она может помочь вам справиться с вашей проблемой.

SFML http://www.sfml-dev.org/tutorials/2.3/

SFML/время http://www.sfml-dev.org/tutorials/2.3/system-time.php

Надеется, что это помогает.

+0

Это выглядит фантастически! Я изучаю это прямо сейчас, скоро отчитаюсь. – Vulkan

+0

После некоторого изучения, кажется, что это хорошая библиотека для меня. Благодаря! – Vulkan

1

Что такое std::chrono? Устойчивые часы могут быть прекрасными.

+0

Приобретено. SFML ограничивается точностью до микросекунды, даже если базовая ОС поддерживает наносекундную точность. 'std :: chrono' обладает превосходной функциональностью, переносимостью и синтаксисом (особенно в C++ 14). –

0

GLFW имеет таймер, который является довольно точным. Насколько я знаю, это миллисекундный таймер. GLFW также довольно приличная библиотека для управления окнами и входами, таких как мыши/ключи/геймпадов и т.д ..

http://www.glfw.org/docs/3.0/group__time.html

 Смежные вопросы

  • Нет связанных вопросов^_^