Win.cpp 파일에 

 

메시지 루프

	// Main message loop:
	while (GetMessage(&msg, nullptr, 0, 0))
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

TranslateMessage에서 키보드 입력에 관련된 문자 키에 대한 것을 번역하고

DispatchMessager를 통해서 윈도우 프로시저에 실행이 될 수 있도록 OS에 요청한다. 

 

 GetMessage는 문제가 있다. 버퍼에 있는가를 계속 조사한다. 없으면 대기 상태에 들어가있다.

위의 while루프를 게임 루프로 실행하게되면 Update Rander를 실행하지 못하게 된다. (이 소스를 그대로 사용하게 되면 마우스를 가지고 계속 흔들어서 메시지를 발생 시켜야 된다.)

따라서 이 부분을 아래와 같이 변형시킵니다.

while (true)
{
	if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) 
	{
		if (msg.message == WM_QUIT) {
			break;
		}
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	else {
		// update and rendering
	}
}

"PM_REMOVE"는 메시지가 있으면 메시지 버퍼를 제거해주는 역할을 한다 

"WM_QUIT"는 윈도우가 종료할 때 나오는 메시지이다. 

 

'게임 개발 > DirectX' 카테고리의 다른 글

3D 그래픽 파이프라인  (0) 2019.10.16
Direct3D -5- 벡터  (0) 2019.10.05
Direct3D -4- 벡터  (0) 2019.10.05
Direct3D -3-  (0) 2019.10.04
Direct3D -2- (Win32 API에서 Direct3d 구동하기)  (0) 2019.10.04

+ Recent posts