게임 개발 자료/DirectX 스터디

DirectX 11 스터디 노트 - 장치 초기화 (Create Device)

원생계 2023. 9. 6. 16:32

DX11 Rendering Pipeline

DeviceAndSwapChain 생성

HRESULT hr = ::D3D11CreateDeviceAndSwapChain(
		nullptr,
		D3D_DRIVER_TYPE_HARDWARE,
		nullptr,
		0,
		nullptr,
		0,
		D3D11_SDK_VERSION,
		&desc,
		_swapChain.GetAddressOf(),
		_device.GetAddressOf(),
		nullptr,
		_deviceContext.GetAddressOf()
	);

D3D11CreateDeviceAndSwapChain 함수

(디스플레이 어댑터와 렌더링에 사용되는 스왑 체인을 나타내는 디바이스를 만듭니다.)

https://learn.microsoft.com/ko-kr/windows/win32/api/d3d11/nf-d3d11-d3d11createdeviceandswapchain

 

DXGI_SWAP_CHAIN_DESC 구조체

https://learn.microsoft.com/ko-kr/windows/win32/api/dxgi/ns-dxgi-dxgi_swap_chain_desc

 

 

RenderTargetVIew 생성

DX11에서 View 라는 용어는 Description 의 의미를 갖고, 자원을 설명해주는 객체를 의미한다고 이해하면 좋다.

ComPtr<ID3D11Texture2D> backBuffer = nullptr;
_swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)backBuffer.GetAddressOf());
_device->CreateRenderTargetView(backBuffer.Get(), nullptr, _renderTargetView.GetAddressOf());

SwapChain 을 통해 Buffer 를 가져와서

Device 로 RenderTargetView 를 생성.

 

__uuidof 연산자

https://learn.microsoft.com/ko-kr/cpp/cpp/uuidof-operator?view=msvc-170 

 

Viewport 설정

void Game::SetViewport()
{
	_viewport.TopLeftX = 0.f;
	_viewport.TopLeftY = 0.f;
	_viewport.Width = static_cast<float>(_width);
	_viewport.Height = static_cast<float>(_height);
	_viewport.MinDepth = 0.f;
	_viewport.MaxDepth = 1.f;
}

 

Render Begin/End

렌더링을 시작하고 종료하는 함수를 작성. DeviceContext 를 활용해서 필요한 함수를 호출.

OM = Output Merge

void Game::RenderBegin()
{
	_deviceContext->OMSetRenderTargets(1, _renderTargetView.GetAddressOf(), nullptr);
	_deviceContext->ClearRenderTargetView(_renderTargetView.Get(), _clearColor);
	_deviceContext->RSSetViewports(1, &_viewport);
}

void Game::RenderEnd()
{
	HRESULT hr = _swapChain->Present(1, 0);
	CHECK(hr);
}

순서

// IA - VS - RS - PS - OM
// Input Assembler
// Vertex Shader
// Rasterizer Stage
// Pixel Shader
// Output Merger

 

<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas

 

리얼-타임 렌더링 4/e

COUPANG

www.coupang.com

 

<DirectX 12를 이용한 3D 게임 프로그래밍 입문> 구입 링크
https://link.coupang.com/a/8V4Wq

 

DirectX 12를 이용한 3D 게임 프로그래밍 입문:게임 개발 중심으로 익히는 대화식 컴퓨터 그래픽 프

COUPANG

www.coupang.com

(링크를 통해 도서 구입시 일정액의 수수료를 지급받습니다.)


728x90
반응형