想象一个价值超过300k三角形的大程序世界(每8x8x8m大块约5-10k)。由于它是程序性的,我需要通过代码创建所有数据。我已经设法制作了一个很好的正常平滑算法,现在我将使用纹理(每个人都需要纹理,你不想在简单的世界中走动,对吗?)。问题是我不知道在哪里计算UV集更好(我正在使用 triplanar纹理映射)。
我有三种方法:
1。在 CPU 上进行计算,然后上传到GPU(网格 >每帧修改< - > 保持静止的时间的百分比,计算完成每块,当块更改);
2。使用顶点着色器对 GPU进行计算(计算在每个帧中为每个三角形 完成,但是网格有点大 - 每帧都这么贵吗?);
3. 将算法移至 OpenCL (计算完成每个块,当块更改时,我已经使用OpenCL来我的数据进行网格划分)并在更改网格时调用内核(价格便宜,但我所有的OpenCL经验都是基于修改现有代码,但我仍然有一些C背景,所以我可能需要很长时间才能完成让它工作);
对于中档硬件而言,我的小实验已经很重,哪种方法更好?
我正在使用带有SlimDX和Cloo的C#(.NET 4.0)。