“多边形”在3D图形方面意味着什么?

时间:2008-10-27 06:50:00

标签: direct3d

一本旧的Direct3D书说

  

“......你可以达到一个可以接受的框架   硬件加速时的速率   显示在2000到4000之间   每帧多边形......“

Direct3D中的一个多边形是什么?它们是指一个基元(索引或其他)还是一个三角形?

5 个答案:

答案 0 :(得分:7)

那本书的意思是三角形。否则,如果我想要1000面多边形怎么办?我每帧仍可以达到2000-4000个这样的形状吗?

答案 1 :(得分:4)

在实践中,你唯一想要它的是一个三角形,因为如果一个多边形不是一个三角形,它通常被镶嵌成一个三角形。 (例如,四边形由两个三角形组成,等等)。基本的三角测量(曲面细分)算法非常简单;你只需循环顶点并将每三个顶点转换成三角形。

答案 2 :(得分:3)

这里,“多边形”是指三角形。全部。但是,正如您所指出的,除了确定性能的三角形数量之外,还有更多的变量。

重要的关键问题是:

  • 存储格式(索引与否;列表,扇形或条带)
  • 存储位置(主机内存顶点数组,主机内存顶点缓冲区或GPU内存顶点缓冲区)
  • 渲染模式(是从主机完全发出的绘制原始命令,或通过实例化)
  • 三角形尺寸

这些变量一起可以产生远大于性能变化的2倍。

类似地,运行应用程序的硬件在现实世界中的性能可能会有10倍甚至更高:2005年低端的GPU(或集成图形处理器)在任何有意义的指标中都会执行10-100倍的速度而不是当前的顶级GPU。

总而言之,任何建议你使用2-4000个三角形是如此荒谬的过时,今天应该完全忽略它。即便是今天的低端硬件也可以在合理的条件下轻松推动帧中的100,000个三角形。此外,目前大多数视觉上有趣的应用程序都受像素着色性能的支配,而不是三角形数量。

今天实现良好三角形吞吐量的一般经验法则:

  • 使用[索引]三角形(或四元组)列表
  • 将数据存储在GPU内存顶点缓冲区
  • 使用每个绘制基元调用(数千个基元)
  • 绘制大批量
  • 在屏幕上使用大多数> = 16像素的三角形
  • 不要使用几何着色器(尤其是几何放大)

做所有这些事情,今天的任何机器都应该能够轻松渲染数十或数十万个三角形。

答案 3 :(得分:2)

根据这个page,多边形在Direct3d中是n面的。

在C#中:

public static Mesh Polygon(
    Device device,
    float length,
    int sides
)

答案 4 :(得分:0)

正如其他人已经说过的,这里的多边形意味着三角形。 三角形的主要优点在于,由于3个点定义了一个平面,因此三角形的定义是共面的。这意味着三角形内的每个点都被精确定义为多边形点的线性组合。更多顶点不一定是共面的,并且它们没有定义唯一的曲面。

机械建模比图形更有优势的是三角形也是不可变形的。