我現在用SDL2編寫了一些程序。 所有工作正常,但我有一個SDL_GetTicks()
方法的問題。 通常它應該返回以毫秒爲單位的總應用時間,但它總是返回大部分時間的值0,有時候爲1.SDL_GetTicks()精度低於毫秒級
我使用SDL_INIT_EVERYTHING
標誌初始化SDL。
以下代碼的問題是循環太快,所以增量時間小於1毫秒。有沒有一種方法可以達到更高的精度?
#include "Application.hpp"
void Application::Initialize()
{
int sdl_initialize_result = SDL_Init(SDL_INIT_EVERYTHING);
if(sdl_initialize_result < 0)
{
std::cerr << "Failed to initialize SDL !" << std::endl << SDL_GetError() << std::endl;
}
window = SDL_CreateWindow("Project Unknown", 100, 100, 800, 600, SDL_WINDOW_SHOWN);
if(window == nullptr)
{
std::cerr << "Failed to create SDL window !" << std::endl << SDL_GetError() << std::endl;
}
last_update_time = SDL_GetTicks();
}
void Application::Dispose()
{
SDL_DestroyWindow(window);
SDL_Quit();
}
void Application::Render()
{
}
void Application::Update()
{
Uint32 current_time = SDL_GetTicks();
Uint32 delta_time = current_time - last_update_time;
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
{
should_close = true;
}
break;
default:
{
}
break;
}
}
// Update game objects with delta_time
last_update_time = current_time;
}
void Application::Run()
{
Initialize();
should_close = false;
do
{
Render();
Update();
}
while(should_close == false);
Dispose();
}
一些代碼可以幫助我們解決問題。 – benbot 2014-10-18 14:40:01
好的,我添加了它。 – user3325226 2014-10-18 15:18:03
和,它使用它導致你的問題?什麼類型是last_update_time? – 2014-10-18 15:50:06