작성
·
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이 아니면 안된다고 떠서요
그냥 한개 만들어서 잘 쓰고있습니다!