Aur*_*rus 5 c++ windows directx directx-11
我现在正在学习DirectX,我读了很多关于VertexBuffer的内容.既然只是通过阅读就无法从编程中学习,我正在用DX11制作一个小型引擎(我的问题不是真的依赖于版本)
据我所知,在VertexBuffer中存储Vertices,实际上我将它存储在Graphic卡上.好吧,我读到了动态和静态缓冲区.所以,如果我理解正确,静态缓冲区初始化顶点,初始化顶点不会改变.好的,但我什么时候真的需要它.我的意思是在一个游戏或其他什么,我什么时候有恒定的顶点?也许对于一些UI对象..? - 但即使这些都不是每次都是不变的......你可以移动它们的2D位置......等等.
下一点是关于动态顶点缓冲区,例如:我有一个缓冲区,其中包含一些顶点,这些顶点被绘制.然后我想添加或删除一些顶点.什么现在..所以我只是"更新"缓冲区.但这是否真的对性能有益?想象一下地形编辑器.在那里你必须更新吨顶点.
我的意思是在一个游戏或其他什么,我什么时候有恒定的顶点?
实际上一直都是.例如,静态几何,您提到的UI对象等.您对移动对象有一点误解,因此会产生混淆 - 您不会通过更改顶点来移动对象.相反,您将通过着色器管道放置顶点.在顶点着色器中,您可以将任意变换应用于顶点.因此,例如,如果您有一棵树由于某种原因在世界各地移动(可能是在浮岛或其他东西上),而不是更改构成树的顶点,您可以更改应用于顶点的变换.
想象一下地形编辑器
这取决于你的地形编辑器应该做什么,但通常你再也不会在这里改变顶点.即,在编辑高度时,而不是上下移动顶点,您将写入高度贴图(大多数时候是灰度纹理),并再次在着色器管道中计算GPU上的变换.