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
<DirectX 12를 이용한 3D 게임 프로그래밍 입문> 구입 링크
https://link.coupang.com/a/8V4Wq
(링크를 통해 도서 구입시 일정액의 수수료를 지급받습니다.)
'게임 개발 자료 > DirectX 스터디' 카테고리의 다른 글
DirectX 11 스터디 - 렌더링 파이프라인 기초 핵심 정리 (0) | 2023.09.11 |
---|---|
DirectX 11 스터디 - 래스터라이저 스테이트, 샘플 스테이트, 블렌드 스테이트 (0) | 2023.09.11 |
DirectX 11 스터디 - 상수 버퍼 (Constant Buffer) (0) | 2023.09.08 |
DirectX 11 스터디 - 텍스쳐 UV맵핑 (ShaderResourceView) (0) | 2023.09.08 |
DirectX 11 스터디 노트 - 도형 만들어보기 (Create Geometry) + 인덱스 버퍼 + 버텍스 셰이더, 픽셀 셰이더 (0) | 2023.09.06 |
DirectX 11 스터디 노트 메모. Device, Context (230812) (0) | 2023.08.12 |
DirectX11 스터디 노트 - 1 (0) | 2023.08.11 |