KoreanFoodie's Study

DirectX 11 2D 게임 프로그래밍 - 13. Rasterizer state과 좌표계 본문

Game Dev/DirectX

DirectX 11 2D 게임 프로그래밍 - 13. Rasterizer state과 좌표계

GoldGiver 2021. 10. 31. 10:23


DirectX 11 2D 게임 프로그래밍 - 13. Rasterizer state과 좌표계

Rasterizer State 설정하기

- FillMode는 정점들로 인해 만들어진 영역을 어떻게 채울 것인가에 대한 정보이다

- CullMode는 어떤 면을 보이지 않게 할 것인가에 대한 정보이다

- FrontCounterClockWise는 정점이 그려지는 순서에 따라 앞면과 뒷면을 정해주는 값이다.

 

Culling 과 Cliping

DirectX vs OpenGL 좌표계

 

Execute.cpp

먼저 Execute.h에서 rasterizer_state를 선언해 준 후, Execute.cpp에서 D3DX... 에 해당하는 값들을 세팅해준다.

ID3D11RasterizerState* rasterizer_state = nullptr;

 

 

	// Create Rasterizer State
	{
		D3D11_RASTERIZER_DESC desc;
		ZeroMemory(&desc, sizeof(D3D11_RASTERIZER_DESC));
		desc.FillMode = D3D11_FILL_SOLID; // FillMode 어떻게 채울지를 결정
		desc.CullMode = D3D11_CULL_BACK; // 어떤 면을 보이지 않게 할 것인지를 결정
		desc.FrontCounterClockwise = false; // 정점이 그려지는 순서대로 앞면과 뒷면을 정해주는 값 (DirectX는 통상적으로 시계방향을 앞면으로 사용)

		// Clipping : 그린 후에 데이터를 잘라내는 것
		// Culling : 그리기 전에 데이터를 잘라내는 것


		auto hr = graphics->GetDevice()->CreateRasterizerState(&desc, &rasterizer_state);
		assert(SUCCEEDED(hr));
	}

 

D3DXMatrixOrtho... 를 사용하여 좌표계 시작 지점을 변경할 수 있다. 이때, 좌표계에 맞게 CullMode나 FrontCounterClockwise값을 적절히 변경해 주어야 한다.

D3DXMatrixOrthoOffCenterLH(&view, 0, Settings::Get().GetWidth(), Settings::Get().GetHeight(), 0, 0, 1);

 

 


더 자세한 내용이 궁금하시다면 직접 들어보시는 걸 추천드립니다!

 
Comments