나는 directx 11을 사용하여 많은 구체를 표시하는 효율적인 방법을 찾고 있습니다. 구체는 (x,y,z,r)
으로 정의되며 여기서 (x,y,z)
은 공간 좌표이고 r
은 반지름입니다. 보일 수있는 구체 만 표시하고 싶습니다. 즉, 시야에 있지 않은 구체와 너무 작아 볼 수없는 구체는 그려지지 않을 것입니다. 그러나 하나의 픽셀보다 작은 구체 그룹이 적어도 하나의 픽셀만큼 크면 가장 중요한 색을 표시하려고합니다. 구에는 단 하나의 색상과 다양한 투명도가 있습니다. 어떤 도움을 주시면 감사하겠습니다. 불완전한 답변도 받아 들일 수 있습니다.Directx 11 구체
1
A
답변
0
몇 가지가 필요합니다. 첫 번째는 인덱싱 된 단위 구형 지오메트리이고, 두 번째는 구 인스턴스 속성 (위치, 반지름 및 색상)을 저장하는 버퍼이고, 세 번째는 API 매개 변수에 대한 작은 버퍼입니다. 세 개의 결합 된 'ID3D11DeviceContext :: DrawIndexedInstancedIndirect'
나머지 질문은 "인스턴스 버퍼를 공급하는 방법"입니다. cpu는 간단합니다. 절두체 컬링을 적용하고 투명도 때문에 맨 앞으로 정렬하고 화면 투영을 기반으로 병합을 적용한 다음 버퍼를 업데이트하고 'ID3D11DeviceContext :: DrawIndexedInstanced'를 사용하십시오.
gpu 버전은 계산 쉐이더와 동일한 작업을 수행하지만 구현하기가 어려울 것입니다. 이점, 제로 CPU/GPU 동기화 및 훨씬 더 많은 인스턴스를 지원해야합니다.