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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2009, 03:22   #1
HWork
Пользователь
 
Регистрация: 27.07.2009
Сообщений: 27
По умолчанию Таймер и синхронизация кадров в 3D приложении. C++

Напишите свои примеры создания таймера, ограничения FPS. Как сделать чтобы приложения работало одинаково на ПК разной мощности.

Я использую таймер из DirectX SDK, возможно есть реализации лучше.
HWork вне форума Ответить с цитированием
Старый 17.08.2009, 06:52   #2
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Код:
var
  StartFrameTick : cardinal;
begin
  StartFrameTick := GetTickCount()
  ...
  //вывод графики, обработка клавишь и все остальное
  ...
  Repeat
    //тут можешь поставить обработку оконной процедуры 
    //while PeekMessage(msg, 0, 0, 0, 1) do
   //begin
     //TranslateMessage(msg);
     //DispatchMessage(msg);
  //end;
  until (GetTickCount - StartFrameTick) > 30;
Ну вот типа такого, просто и достаточно точно.
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 17.08.2009, 16:01   #3
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

int dt=0;
int Time;
...
{
time=getTickCount();
physics(dt);
graph;
//и вообще тут все все все, ведь нужно получить полностью синхронизированную картинку
dt=getTickCount()-time;
}

Все в общем просто, нужно узнать время в самом начале, а потом в конце и вычислить delta time. И да, я бы воспользовался QueryPerformanceCounter, но тут стоит обратить внимание что dt не всегда будет положительным)))

Еще есть вариант воспользоваться виндозовским таймером timeSetEvent() и рассчитывать физику(все расчеты) в нем
Kostia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отдел кадров - что в него входит ScorpioN_T БД в Delphi 5 05.06.2009 09:49
Что за текучка кадров? =) JTG Свободное общение 1 15.09.2008 11:53
Как в Медиаплеере изменить количество кадров за секунду? ZhekON Общие вопросы Delphi 4 13.05.2007 13:15