unsigned int deltaTime = now() - last();
unsigned int freq = getFreq();
float timeOfGap = float(deltaTime) / float(freq);
ASSERT(0.0f <= timeOfGap, "WHAT?");
Я получил очень утомительный результат от моей программы. Я не поймал сцену, которая произошла. Но у меня есть журнал, в котором сказано, что он действительно поднимался как минимум несколько раз.
Есть ли возможный способ деления двух чисел с плавающей точкой, которые были отлиты из unsigned int, сделать отрицательный результат с плавающей точкой?
ОК, спасибо, ребята. Я рад видеть ваше внимание.
Позвольте мне попытаться добавить некоторые описания об этом. Это будет полезно для вас.
Я работаю над онлайн-игрой, и эта ситуация возникала редко, но часто, когда игра играла сотни миллионов раз. Я не могу отладить или поймать точный выстрел, но он регистрируется в сообщениях об ошибках db.
timeOfGap должен быть равен NaN, как вы заметили, но журнал не сообщал значение точно. TimeOfGap накапливается, как показано ниже;
mTotalFrameRateTimeAsASecond += timeOfGap;
И эта программа регистрирует mTotalFrameRateTimeAsASecond, это было отрицательное значение. Но кроме того, что этот знак стоимости был отрицательным, это правильное значение. Это значит, что время будет выглядеть так же хорошо, если я разделю окончательное значение с частотой кадров. Гипотетическое время воспроизведения составило 500 секунд, оно составляет -30000 (с частотой 60 кадров в секунду).