繁体   English   中英

DX11动态大小的缓冲区

[英]DX11 Dynamically sized buffer

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

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

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

似乎最好的方法是使用附加缓冲区。 您必须注意不要依赖于添加元素的顺序,因为多线程是专门为允许随机添加事物而设计的。 我必须一次将数据附加到一个Triangle中,这使我无法使用索引缓冲区,但是我看不到任何其他方法来执行此操作。

如果有人提出更好的解决方案,我将很高兴听到。

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

工作正常后,我使用计划使用的噪波功能对其进行了测试,并记下了顶点缓冲区所需的最大顶点数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM