Direct3D 초기화 예제

2022. 9. 25. 23:07Public/GraphicsAPI

현재까지의 응용 프로그램 프레임워크를 사용해서 간단한 예제 응용 프로그램을 만들것이다.

주된 기능은 부모 클래스 D3DApp이 대부분 담당하기 때문에 이 예제만의 코드는 거의 없다. 

이 예제의 의의는 D3DApp에서 클래스를 하나 파생하고 이 예제만의 고유한 코드로 프레임워크 메서드들을 구현하는 방법을 보여주는 것이다. 

 

class InitDirect3DApp : public D3DApp
{
public:
	InitDirect3DApp(HINSTANCE hInstance);
	~InitDirect3DApp();

	bool Init();
	void OnResize();
	void UpdateScene(float dt);
	void DrawScene(); 
};

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
				   PSTR cmdLine, int showCmd)
{
	// Enable run-time memory check for debug builds.
#if defined(DEBUG) | defined(_DEBUG)
	_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif

	InitDirect3DApp theApp(hInstance);
	
	if( !theApp.Init() )
		return 0;
	
	return theApp.Run();
}

InitDirect3DApp::InitDirect3DApp(HINSTANCE hInstance)
: D3DApp(hInstance) 
{
}

InitDirect3DApp::~InitDirect3DApp()
{
}

bool InitDirect3DApp::Init()
{
	if(!D3DApp::Init())
		return false;

	return true;
}

void InitDirect3DApp::OnResize()
{
	D3DApp::OnResize();
}

void InitDirect3DApp::UpdateScene(float dt)
{

}

void InitDirect3DApp::DrawScene()
{
	assert(md3dImmediateContext);
	assert(mSwapChain);

	md3dImmediateContext->ClearRenderTargetView(mRenderTargetView, reinterpret_cast<const float*>(&Colors::Blue));
	md3dImmediateContext->ClearDepthStencilView(mDepthStencilView, D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL, 1.0f, 0);

	HR(mSwapChain->Present(0, 0));
}

 

참고서적 : http://www.yes24.com/Product/Goods/11129592

'Public > GraphicsAPI' 카테고리의 다른 글

Direct3D 첫번째 요약  (0) 2022.09.25
Direct3D 응용 프로그램의 디버깅  (0) 2022.09.25
DX11 Tutorial02 코드 설명  (0) 2022.08.22
광원  (0) 2022.08.15
행렬 01  (0) 2022.08.15