두 개의 다른 메쉬에 대해 두 개의 버텍스 버퍼를 생성한다고 가정 해 보겠습니다.DirectX 11에서 인덱스 버퍼 사용. 어떻게 알 수 있습니까?
(I'm assuming creating separate buffers for separate meshes is how it's usually done)
자, 인덱스 버퍼를 사용하여 메시 중 하나를 그려야한다고 가정 해 봅시다. Direct3D 11의 실용적인 렌더링 및 계산 인덱스 버퍼를 어떤 방식 으로든 참조하는 것은 인덱스 버퍼를 만드는 것처럼 보이지 않으므로 인덱스 버퍼는 (입력 어셈블리 중에) 어떤 버텍스 버퍼가 작동 하는지를 어떻게 알 수 있습니까? ?
나는 답이없는 인터넷 검색을 한 적이 있는데, 이는 내가 누락 된 부분이 있다는 것을 분명히 추측합니다.
나는 그것을 알지 못했다. 그렇다면 별도의 메쉬를위한 별도의 버퍼를 가지고 있다는 가정하에 올바른 가정이 무엇입니까? 하나의 장면이 정적 인 소품과 같은 특정 메쉬에 유용 할 수 있다는 것을 이해합니다. 그러나 일반적으로 좋거나 나쁜 습관입니까? 얼마나 많은 사람이 사용할 수 있는지/사용할 수 있는지에 대한 제한이 있습니까? –
여러 가지 방법으로 VB/IB를 구성 할 수 있습니다. 중요한 문제는 소재 설정이 드로잉 사이에서 변경되어야하기 때문에 각 '메쉬 서브 세트'를 별개의 드로잉으로 제출할 수 있어야한다는 것입니다.[하드웨어 제한] (https://blogs.msdn.microsoft.com/chuckw/2012/06/20/direct3d-feature-levels/) 내에서 전체 레벨에 하나의 VB와 IB를 사용할 수도 있습니다. DirectX를 처음 사용하는 경우 간단한 작업 만 수행하면됩니다. BTW, [DirectX Tool Kit] (https://github.com/Microsoft/DirectXTK/wiki/Getting-Started)를보십시오. –
@EliasFinoli 성능면에서 가장 좋은 방법은 DI 호출 수를 줄이는 것입니다. 즉, VB/IB를 연결하여 하나의 호출로 렌더링하여 버텍스 레이아웃, 일부 텍스처 및 일부 셰이더를 공유하는 메시를 그룹화하는 일괄 처리를 줄이는 것입니다. 가장 일반적인 일괄 처리 전략은 없으며 장면, 대상 하드웨어 기능 등에 따라 다릅니다. 일부 기술은 [여기] (https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch28.html)에 나와 있습니다. – w1ck3dg0ph3r