一本旧的 Direct3D 书说
“......您可以通过硬件加速实现可接受的帧速率,同时每帧显示 2000 到 4000 个多边形......”
Direct3D 中的一个多边形是什么?它们是指一个基元(索引或其他)还是一个三角形?
一本旧的 Direct3D 书说
“......您可以通过硬件加速实现可接受的帧速率,同时每帧显示 2000 到 4000 个多边形......”
Direct3D 中的一个多边形是什么?它们是指一个基元(索引或其他)还是一个三角形?
那本书的意思是三角形。否则,如果我想要 1000 面的多边形怎么办?我还能达到每帧 2000-4000 个这样的形状吗?
在实践中,您唯一希望它是一个三角形,因为如果一个多边形不是三角形,它通常会被细分为一个三角形。(例如,一个四边形由两个三角形组成,等等)。一个基本的三角测量(镶嵌)算法非常简单;您只需遍历顶点并将每三个顶点变成一个三角形。
这里,“多边形”是指三角形。全部 。但是,正如您所指出的,除了决定性能的三角形数量之外,还有更多变量。
重要的关键问题是:
这些变量加在一起可以产生远大于 2 倍的性能变化。
同样,运行应用程序的硬件在现实世界中的性能可能相差 10 倍或更多:2005 年低端的 GPU(或集成图形处理器)在任何有意义的指标上都将比当前的性能慢 10-100 倍顶级GPU。
总而言之,任何使用 2-4000 个三角形的建议都已经过时了,以至于今天应该完全忽略它。即使是今天的低端硬件也可以在合理的条件下轻松地将 100,000 个三角形推入一个框架中。此外,当今大多数视觉上有趣的应用程序都以像素着色性能为主,而不是三角形计数。
当今实现良好三角形吞吐量的一般经验法则:
做所有这些事情,今天的任何机器都应该能够轻松渲染数万或数十万个三角形。
根据这个页面,多边形在 Direct3d 中是 n 边的。
在 C# 中:
public static Mesh Polygon(
Device device,
float length,
int sides
)
正如其他人已经说过的,这里的多边形意味着三角形。三角形的主要优点是,由于 3 个点定义了一个平面,因此三角形根据定义是共面的。这意味着三角形内的每个点都被精确地定义为多边形点的线性组合。更多的顶点不一定是共面的,它们也没有定义一个唯一的曲面。
与图形相比,机械建模的一个优势是三角形也是不可变形的。