У меня есть приложение DirectX9, которое отображает только треугольник на экране, но я получаю частоту кадров 60 FPS независимо от того, есть ли у меня VSync или нет , Почему это?Выключил VSync, но все еще получал 60FPS в моем приложении DirectX 9
Вот код, который я сделал для расчета FPS, но я не знаю, является ли это проблемой для него.
GameTimer.h
#pragma once
#include "Windows.h"
class GameTimer {
public:
GameTimer();
~GameTimer(){}
void Update();
float GetFrameTime();
inline float GetFramePerSec(){return framesPerSec;}
inline float GetMillSecPerFrame(){return millSecPerFrame;}
private:
float secsPerCount;
_int64 prevTimeStamp;
float framesPerSec;
float millSecPerFrame;
};
GameTimer.cpp
#include "GameTimer.h"
GameTimer::GameTimer() {
_int64 countsPerSec = 0;
QueryPerformanceFrequency((LARGE_INTEGER*)&countsPerSec);
secsPerCount = 1.0f/(float)countsPerSec;
prevTimeStamp = 0;
QueryPerformanceCounter((LARGE_INTEGER*)&prevTimeStamp);
framesPerSec = 0.0f;
millSecPerFrame = 0.0f;
}
void GameTimer::Update()
{
static float numFrames = 0.0f;
static float timeElapsed = 0.0f;
numFrames += 1.0f;
timeElapsed += GetFrameTime();
if(timeElapsed >= 1.0f)
{
framesPerSec = numFrames;
millSecPerFrame = 1000.0f/numFrames;
numFrames = 0;
timeElapsed = 0;
}
}
float GameTimer::GetFrameTime() {
_int64 currentTimeStamp = 0;
QueryPerformanceCounter((LARGE_INTEGER*)¤tTimeStamp);
float timeDiff = (currentTimeStamp - prevTimeStamp) * secsPerCount;
prevTimeStamp = currentTimeStamp;
return timeDiff;
}
Зная, что это только треугольник на экране (не сложный материал не втягивается), он должен оказывать более 1000 кадров в секунду, если у меня есть VSync, не так ли?
Спасибо за ответ. Я не знаю, как вы отключаете настольную композицию, но я сменил ее на Windows 7 Basic, и проблема все еще происходит - все еще происходит около 60FPS. – Danny
Некоторые драйверы предлагают возможность принудительного VSync. Есть ли что-нибудь в вашей панели управления nVidia/AMD/ATi/Intel? – jameswilddev
Я использую графическую карту nVidia, и я использовал панель управления, чтобы отключить VSync – Danny