1

我正在尝试为大学项目制作可变形的体素地形。我目前正在使用数字 3DTextures 将我的体素数据保存在“块”中。我的计划是使用计算着色器对所述体素数据执行行进立方体算法,并将顶点输出到缓冲区中,然后每帧都可以渲染该缓冲区。

问题是,为了为我正在使用的结构化缓冲区设置 UAV,我需要知道 D3D11_BUFFER_UAV 的 NumElements 有多少元素。我可以猜测它可能包含的最大值,但是在计算着色器完成之前我无法知道它实际上会包含多少,并且我想到这可能不是解决问题的最佳方法.

我真正需要做的就是让计算着色器输出任意数量的顶点,这些顶点可以在以后存储和渲染,关于最好的方法有什么想法吗?

4

2 回答 2

0

似乎最好的方法是使用附加缓冲区。您必须小心,不要依赖添加元素的顺序,因为多线程是专门为允许随机添加内容而设计的。我必须一次将数据附加一个三角形,这使我无法使用索引缓冲区,但我看不到任何其他方法可以做到这一点。

如果有人提出更好的解决方案,我很乐意听到。

于 2013-04-14T15:06:55.503 回答
0

在我的体素引擎中,我遇到了同样的问题,最初我分配的缓冲区能够包含可能生成的最大顶点数。

一切正常后,我用我计划使用的噪声函数对其进行了测试,并记下了顶点缓冲区所需的最高顶点数。

然后我只是添加了一点并将该值用作我的应用程序中所有顶点缓冲区的大小。

于 2013-04-17T14:58:55.027 回答