스왑체인이 가지고 있는 백버퍼(RendertargetResource)에 그려진 그림을 window에 bitmap에 표시하는 함수
m_Context->ClearRenderTargetView(m_RTView.Get(), Color);
// 깊이 값을 1로 놓는 이유는 깊이 값이 작을 수록 화면에 가까운 거라고 생각하면된다.
// 즉 0으로 놓으면 0보다 더 깊은 물체에 있는 것은 없기 때문에 아무것도 표현할 수 없다
m_Context->ClearDepthStencilView(m_DSView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.f, 0);
// ViewPort 설정
// VIewPort는 간단히 말하면 내가 출력할 곳을 말하는거
// TopLeft,Topright에서 너비, 높이만큼 출력화면을 가지고 해당 영역에서 출력함
D3D11_VIEWPORT ViewportDesc = {};
ViewportDesc.MinDepth = 0.f;
ViewportDesc.MaxDepth = 1.f;
ViewportDesc.TopLeftX = 0.f;
ViewportDesc.TopLeftY = 0.f;
ViewportDesc.Width = m_vRenderResolution.x;
ViewportDesc.Height = m_vRenderResolution.y;
// 뷰포트 -> clipspace(4차원 동차좌표계) -> NDC(cliping 된 공간 + W 곱하기가 된 곳 3차원 평면) -> 스크린에 대응되느 공간으로 변환하기 위해 해당 뷰포트를
// resterization 스테이지에 바인드함
m_Context->RSSetViewports(1, &ViewportDesc);
예습하기
정점은 말 그대로 점이 아니라 그 점이 가지고 있는 정보들의 집합체이다.
CPU에 있는 정점의 정보들을 GPU로 옮기는 과정에 buffer가 필요(커맨드 버퍼 사용)
※ GPU를 항상 동기 시켜놓으면 안되는건가요?
CPU와 GPU는 처리하는 속도가 차이나기때문에 GPU가 언제나 CPU가 처리하는 시간을 기다리고 있을 수가 없음
resterization 부분에서 각 정점 정보안에 있는 다른 pixel 정보들을 처리하는데 수많은 pixel들을 처리해야 하므로 처리량은 많지만 단순 연산
즉, gpu의 필요성을 여기서 알 수 있다.