5

我现在正在学习 DirectX,我读了很多关于 VertexBuffer 的文章。由于您无法通过阅读来学习编程,因此我正在使用 DX11 制作一个小型引擎(好吧,我的问题实际上与版本无关)

据我了解,我在 VertexBuffer 中存储顶点,实际上我将它存储在图形卡上。好吧,我阅读了有关动态和静态缓冲区的信息。所以如果我理解正确,静态缓冲区是用顶点初始化的,并且初始化的顶点不会改变。好的,但我什么时候真的需要它。我的意思是在游戏或其他什么情况下,我什么时候有恒定的顶点?也许对于一些 UI 对象..?- 但即使这些也不是每次都保持不变......你可以移动他们的二维位置......等等......

下一点是关于动态顶点缓冲区,例如:我有一个缓冲区,里面有一些顶点,这些顶点被绘制出来。然后我想添加或删除一些顶点。现在怎么办..所以我会简单地“更新”缓冲区。但这真的对性能有好处吗?想象一个地形编辑器。在那里你必须更新大量的顶点。

4

1 回答 1

7

我的意思是在游戏或其他什么情况下,我什么时候有恒定的顶点?

其实一直都是。例如,静态几何体、您提到的 UI 对象等。您对移动对象有一点误解,因此会产生混淆 - 您不会通过更改对象的顶点来移动对象。相反,您将通过着色器管道放置顶点。在顶点着色器中,您可以对顶点应用任意变换。因此,例如,如果您有一棵树由于某种原因在世界各地移动(可能在浮岛上或其他地方),而不是更改构成树的顶点,而是更改应用于顶点的转换.

想象一个地形编辑器

这取决于你的地形编辑器应该做什么,但通常你不会在这里改变顶点。即在编辑高度时,而不是上下移动顶点,您写入高度图(大部分时间是灰度纹理),然后再次在着色器管道中计算 GPU 上的转换。

于 2012-11-13T19:32:18.793 回答