Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Почему GetSystemTime() не работает?


Автор: Div 3.7.2005, 15:15
Я в игре хочу выводить время. После инициализации D3D и загрузки 3D моделей, я записываю в переменные OldGameTimeMin и OldGameTimeSec текущие минуты и секунды соответственно, делаю я это для того, чтобы время в игрушке шло с нуля.

Перед вызовом RenderScene(), я вновь вызываю GetSystemTime(&systime) для обновления времени. После запуска игры на 1-2 сек показывается черный экран и вываливается в винду. Вопрос: почему так?

Автор: empter 3.7.2005, 16:50
Про твою проблему точно не знаю, но вообще GetSystemTime() работает ОЧЕНЬ медленно. Я использую timeGetTime - возвращает прошедшее время со старта винды. посмотри Help в SDK

Автор: Div 3.7.2005, 19:15
Этот таймар работает!!! Спасибо. В нем, правда больше расчетов надо! Ну, да, ладно smile

Кто сможет оптимизировать? smile
Задача: получить из миллисекунд минуты и секунды!

Код

    int tim=0;
    int sec=0;

    NewGameTime=timeGetTime();

    tim=NewGameTime/1000/60/60;    // сколько часов
    tim=tim*1000*60*60;        // сколько часов в миллисекундах
    NewGameTime=NewGameTime-tim;    // миллисекунды без часов
                
    sec=NewGameTime/60/1000;
    sec=sec*60*1000;
    sec=NewGameTime-sec;

    GameTimeMin=NewGameTime/1000/60;
    GameTimeSec=sec/1000;

Добавлено @ 19:17
Кста! В SDK я не нашел! Я смотрел в MSDN.

Автор: empter 4.7.2005, 17:48
Всегда пожалуйста smile

Автор: Helicopter 22.7.2005, 23:23
не усложняй код. вот это попробуй

GetTickCount ()/666.0f

число в знаменателе - скорость

Автор: Div 6.8.2005, 12:42
Мне больше понравилось так:

SetTimer(hWnd, NULL, NULL, NULL);

А потом через WM_TIMER всё снимать

Автор: empter 6.8.2005, 19:03
Я читал, что самая быстрая функция получения времени timeGetTime, хотя это уже тебе решать критично ли тебе быстродействие, да и вычислений действительно многовато.

Автор: codelord 6.8.2005, 19:10
а как тебе GetLocalTime(&systime); ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)