本质上,我想消除从CPU到GPU产生相干噪声的需要。从那里,我还想使用此噪声作为体素点的密度来生成三维世界的地形。在此之后,我想获取这些密度并将它们代表世界的地形多边形化(生成顶点)。
一切都很好。但是,我也想实时地动态改变世界。一旦达到这一点,尝试将顶点返回给CPU来执行诸如碰撞检测之类的事情,以及我想涉及CPU而不是GPU的所有游戏计算等问题。
所以问题是:如何将顶点的子集返回给CPU以处理冲突?
还有一个问题:是否有一种简单的方法来获取一组顶点并在GPU上从中生成索引?
对于这些不同的东西应该使用哪种着色器,我感到困惑。我听说有人使用像素着色器来收集密度,然后使用几何着色器来处理从顶点生成的地形,然后以某种方式合并顶点着色器来进行动态变形。
我正在使用C#4.0,.NET 4.0和XNA Game Studio 4.0。