게임에서 초당 프레임을 추적하려고합니다. 나는 fps가 평균으로 보이기를 원하지 않습니다. 키를 밀고 모델 등을 추가 할 때 프레임 속도가 어떻게 영향을 받는지보고 싶습니다. 그래서 현재 시간과 이전 시간을 저장하는 변수를 사용하고 있고, 1 초 차이가 나는 경우 fps를 업데이트합니다.이 fps 카운터가 정확하지 않은 이유를 모르겠습니다.
내 문제는 약 33fps로 보이지만 실제로 마우스를 빠르게 움직이면 fps가 최대 49fps로 올라갑니다. 다른 경우, 프레임 카운터와 관련이없는 간단한 코드 줄을 변경하거나 나중에 프로젝트를 닫고 나중에 열면 fps는 약 60이됩니다. Vsync가 켜져있어 마우스가 여전히 영향을 미치는지 알 수 없습니다. fps.
int FrameCount;
double fps, currentTime, prevTime, TimeDelta, TimeElapsed;
는 오해 여기 방법이 무엇인지 알려 주시기 바랍니다 : 여기에
FrameCount++;
currentTime = timeGetTime();
static unsigned long prevTime = currentTime;
TimeDelta = (currentTime - prevTime)/1000;
if (TimeDelta > 1.0f)
{
fps = FrameCount/TimeDelta;
prevTime = currentTime;
FrameCount = 0;
TimeDelta = 0;
}
변수 선언은 다음과 같습니다 여기
는 모든 프레임을 어떻게 업데이트 기능에 내 코드입니다 수정하거나 fps를 더 잘 계산할 수있는 방법이 있는지 확인하십시오. 감사!!!!!!
저는 DirectX 9 btw를 사용하고 있지만 관련성이 의심스럽고 PeekMessage를 사용하고 있습니다. 대신 if else 문을 사용해야합니까?
MSG msg;
ZeroMemory (&msg, sizeof (MSG));
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
Update();
RenderFrame();
}
이 답변은 프레임을 생성하는 방법과이 코드가 렌더링 루프에있는 위치에 따라 달라집니다. – ChrisF