2013-03-31 8 views
1

대학용 프로젝트에서 변형 가능한 보셀 지형을 만들려고합니다. 나는 현재 "덩어리"로 보셀 데이터를 저장하기 위해 3DTextures를 사용하고 있습니다. 내 계획은 계산 쉐이더를 사용하여 상기 보셀 데이터에 행진 큐브 알고리즘을 수행하고 각 프레임을 렌더링 할 수있는 버퍼에 정점을 출력하는 것이 었습니다.DX11 동적 크기 버퍼

문제는 구조화 된 버퍼에 대해 UAV를 설정하기 위해 D3D11_BUFFER_UAV의 NumElements에 대해 얼마나 많은 요소가 있는지 알아야한다는 것입니다. 짐작할 수있는 최대치를 추측 할 수는 있지만 계산 쉐이더가 끝날 때까지 실제로 얼마나 많은지 알 수있는 방법이 없으며 이것이 문제 해결의 최선의 방법이 아닐 수도 있습니다. .

내가 정말로해야 할 것은 계산 쉐이더를 저장하고 나중에 렌더링 할 수있는 정점의 임의의 수를 출력하는 것입니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

0

이렇게하는 가장 좋은 방법은 추가 버퍼를 사용하는 것입니다. 멀티 쓰레딩은 특별히 무작위로 물건을 추가 할 수 있도록 특별히 설계되어 있으므로 요소를 추가하는 순서에 의존하지 않도록주의해야합니다. 한 번에 하나의 삼각형을 추가해야만 인덱스 버퍼를 사용할 수 없게되었지만 다른 방법으로는 볼 수 없었습니다.

누구든지 더 나은 솔루션을 제공한다면 기쁜 마음입니다.

0

내 보셀 엔진에서 나는 동일한 문제가 발생했다. 처음에는 생성 될 수있는 최대 정점 수를 포함 할 수 있도록 버퍼를 할당했다.

나는 일을 처리 한 후, 내가 사용할 계획이었던 노이즈 기능을 테스트하여 버텍스 버퍼에 필요한 가장 많은 수의 버텍스를 기록했습니다.

그런 다음 비트를 추가하고 해당 값을 응용 프로그램의 모든 버텍스 버퍼의 크기로 사용했습니다.