비타Cpp

FPS : Frames Per Second(초당 프레임 수) 본문

DirectX12/튜토리얼

FPS : Frames Per Second(초당 프레임 수)

멍C 2021. 10. 16. 15:45

게임이나 그래픽 응용 프로그램은 흔히 초당 프레임 수(FPS: Frames Per Second)를 측정한다. 이를 계산하는 방법은 간단하다. 일정 기간 t동안 처리한 프레임 개수를 세어서 변수 n에 저장한다. 그것을 t로 나누면 평균 FPS가 된다. 여기서 t를 1로 지정해두면 사칙 연산중 오래 걸리는 나눗셈을 피해 계산이 가능하다.

 

다음은 예제로 만든 FPS측정 메서드이다.

void D3DApp::CalculateFrameStats()
{
	//해당 코드는 초당 프레임을 계산하고, 1프레임 렌더시 걸리는 시간의 평균을 계산한다.
	//해당 수치들은 창의 제목표시줄에 추가된다.

	static int frameCnt = 0;
	static float timeElapsed = 0.0f;

	frameCnt++;

	//1초동안의 프레임 시간의 평균을 계산합니다.
	if ((mTimer.TotalTime() - timeElapsed) >= 1.0f)
	{
		float fps = (float)frameCnt;
		float mspf = 1000.0f / fps;

		wstring fpsStr = to_wstring(fps);
		wstring mspfStr = to_wstring(mspf);

		wstring windowText = mMainWndCaption +
			L"	fps: " + fpsStr +
			L"	mspf: " + mspfStr;

		SetWindowText(mhMainWnd, windowText.c_str());

		//다음 계산을위해 리셋
		frameCnt = 0;
		timeElapsed += 1.0f;
	}
}

사실 우리가 좀 더 유용하게 사용하는 것은 주로 fps(초당 프레임 수)보다는 mspf(프레임당 밀리초 수)이다. 한 프레임의 소요 시간을 알아야 해당 장면의 시간의 증가/감소가 한눈에 들어오기 때문이다.

'DirectX12 > 튜토리얼' 카테고리의 다른 글

Direct3D 초기화 예제  (0) 2021.12.04
메시지 처리부(Message Proc)  (0) 2021.12.04
Direct3D Base 클래스 - D3DApp  (0) 2021.10.16
시간 측정  (0) 2021.10.10
Direct3D의 초기화 - 가위 직사각형 설정  (0) 2021.10.09
Comments