Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Directx 为什么对平坦地形使用三角测量?_Directx_Mesh_Triangulation_Tesselation - Fatal编程技术网

Directx 为什么对平坦地形使用三角测量?

Directx 为什么对平坦地形使用三角测量?,directx,mesh,triangulation,tesselation,Directx,Mesh,Triangulation,Tesselation,我见过许多处于有线模式的地形,它们都使用三角形。我知道,如果你在不同高度使用它,但为什么人们在地形平坦的地方使用这么多三角形呢?如果有一个大的平面区域,那么创建一个大正方形或至少一个大三角形(尽可能大)而不是使用这么多的小三角形不是很明智吗 所以我的问题是,有没有这样做的理由(可能是为了纹理)?我知道tesselation做了类似的事情,但在我看来仍然留下了太多的三角形。可能的原因: 他们没有地形优化程序 它们使用顶点照明。除非地形是密集的三角形,否则看起来很可怕 着色器不能很好地处理大型三角形

我见过许多处于有线模式的地形,它们都使用三角形。我知道,如果你在不同高度使用它,但为什么人们在地形平坦的地方使用这么多三角形呢?如果有一个大的平面区域,那么创建一个大正方形或至少一个大三角形(尽可能大)而不是使用这么多的小三角形不是很明智吗

所以我的问题是,有没有这样做的理由(可能是为了纹理)?我知道tesselation做了类似的事情,但在我看来仍然留下了太多的三角形。

可能的原因:

  • 他们没有地形优化程序
  • 它们使用顶点照明。除非地形是密集的三角形,否则看起来很可怕
  • 着色器不能很好地处理大型三角形。在三角形上插入较大的值(如light dir等)可能会导致精度问题
  • 物理引擎不能处理巨大的三角形
  • 巨大的三角形会产生伪影(我认为纹理重复的数量取决于硬件)
  • 多种材料(超过8种)穿越地形。这将超过某些卡上的多纹理限制,因此有必要分割地形
  • 多个不同的材质或区域跨越地形、流区。不同的材质可能需要不同的纹理坐标等,如果地形顶部有第二组坐标(优化的展开光照贴图),则无法使用一个大的平面三角形
  • 具有多个光源的每像素照明。如果您有多个光源,并且希望同时使用所有光源,则可能必须使用加法alpha混合。使用三角地形,您可以选择一个受此特定资源影响的小区域,并使用该光源添加的镜面反射重新绘制它。如果你简单地用剪切平面剪切大三角形,你会看到z形格斗。如果不选择地形光影响的小区域,则必须重新绘制整个地形,这很可能会导致性能下降(填充率/着色器性能,因为许多像素被重新绘制)

  • 也许是为了简化挑选工作,更容易去掉三角形,然后重塑大面积。@JohnB:这样做有很多可能的原因——我列出的只是我能想到的最明显的情况。是的,只是增加了一个可能的小原因,但这本身不值得回答