인프런 커뮤니티 질문&답변

정윤성님의 프로필 이미지
정윤성

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

RenderTarget Group 적용

작성

·

182

·

수정됨

0

DX12에서 썼던 방법으로 RenderTargetGroup을 적용하는데

SwapChain 옵션 중 SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD; 로 주니까

SwapChain의 버퍼 카운트를 2로 했는데도

SwapChain->GetBuffer(index, IID_PPV_ARGS(&resource));
이 부분에서 index가 0이 아니면 resource를 반환해주지를 않는데,

DX11에서는 DX12때 처럼 SwapChain의 BackBufferIndex를 이용해서 수동으로 관리하는게 불가능한가요

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

DX12에서 RenderTargetGroup을 적용할 때 SwapChain의 버퍼 카운트를 2로 설정하고 SwapEffect를 DXGI_SWAP_EFFECT_FLIP_DISCARD로 주었는데, GetBuffer 함수에서 index가 0이 아닐 경우 resource를 반환해주지 않는다는 문제가 발생하는 건가요?

DX11과는 달리 DX12에서는 SwapChain의 BackBufferIndex를 이용해서 수동으로 관리하는 방식은 불가능합니다. 대신 DXGI_SWAP_EFFECT_FLIP_DISCARD와 같이 Swap effect를 사용하면 자동으로 렌더링 타겟을 관리해주기 때문에 개발자가 직접적으로 index를 이용해서 타겟을 관리할 필요가 없습니다.

정확한 원인을 파악하기 위해서는 조금 더 코드를 확인해야 할 것 같습니다. SwapChain의 생성 코드와 렌더 타겟을 설정하는 부분, 그리고 GetBuffer 함수를 어떻게 호출하고 있는지 등을 확인해보세요. 문제의 원인을 파악해서 보다 구체적인 도움을 드릴 수 있을 거예요.

더 궁금한 점이 있다면 언제든지 물어보세요. 좋은 결과 얻으시기를 바랄게요.

정윤성님의 프로필 이미지
정윤성
질문자

dx12에서는 SwapChainDesc에 BufferCount = 2 로 주고서 DXGI_SWAP_EFFECT_FLIP_DISCARD 로 사용할 때, RTGroup내에 RTV를 만들기 위해서 swapchain->GetBuffer(index~)

해줬는데, DX11에서는 DXGI_SWAP_EFFECT_FLIP_DISCARD로 설정할 경우 GetBuffer에 넣을수 있는 인덱스가 0이 아니면 안된다고 떠서요

그냥 한개 만들어서 잘 쓰고있습니다!

정윤성님의 프로필 이미지
정윤성

작성한 질문수

질문하기