• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

CommandQueue 질문

21.07.23 21:55 작성 조회수 160

0

RenderBegin()과 RenderEnd()의 실행 과정이 제가 이해한 내용이 맞는지 모르겠어서 질문드립니다.

만약 [0] [1] 의 더블버퍼가 있다고 가정할 때,  swapChain의 BackBuffer가 1일 경우 RenderBegin에서 1의 상태를 <화면출력> 상태에서

<외주 결과물> 상태로 바꿔주고  GPU가 사용할 수 있게 만든 후,  GPU의 처리가 끝나고 결과물을 화면에 출력하기위해 RenderEnd를 이용하여 1의 상태를 <외주 결과물>에서 <화면 출력>으로 바꿔주고  GPU는 이어서 0을 사용해야하기 때문에 SwapChain의 백버퍼를 0으로 바꿔준다고 이해했는데.. 이게 맞나요? 쓰면서도 제가 무슨 말 을하는지 모르겠네요...

답변 1

답변을 작성해보세요.

1

그 부분은 후반에 RenderTarget을 다룰 때 계속 해보기 때문에, 일단 넘어가셔도 됩니다.
RenderBegin/RenderEnd 보다는 사실 OMSetRenderTarget 이라는 API가 핵심인데
결과적으로 우리는 2개의 버퍼를 만들어서 매 프레임마다 교체를 해주고 있습니다.
2개 버퍼 중 하나는 실제 출력 용도,
하나는 다음 프레임 화면을 그리는 대상으로 사용하는 것이죠.