2013-04-12 61 views
0

我要开发的directX应用程序可以通过两种方式实现 - 一种是我们有大量三角形和相关颜色,另一种是三角形数量较少但通过生成纹理的纹理贴图添加细节。顶点处理与像素着色的相对费用

我已经足够新的GPU硬件,我没有这两种方法的代价直觉 - 我的猜测是处理大量的顶点比少量的顶点更昂贵,但有些从像素着色器中添加细节,但无法在硬件方面证明这一点。

任何人都可以解释如何思考这个问题,或者这是否是正确的思维方式?

任何帮助表示赞赏

Anondev

+0

看看游戏是如何处理这个问题的。他们使用凹凸贴图等技术来伪造较低的多边形数量。我认为你的逻辑是正确的,因为你想要保守你的多边形。如果我是你,我会问自己,如果我不能使用更多的多边形,我是否可以使用着色器。 –

回答

0

更有效地使用大量的多边形和他们使用的纹理细节。这就是纹理映射存在的原因。这是试图使平面显得更加细致。凹凸贴图技术通过使光照像多边形不平坦一样进一步增强效果。

然而,这绝不会看起来像使用多边形作为现实的,因为问题,如silouette是平等

如果你想象的三角形如此之小,他们最终采取了一个像素在屏幕上。每个像素必须使用矩阵数学计算其位置,每个多边形将被交给光栅器并转换为单个像素,每个像素将被发送到像素着色器。这是很多工作,像素着色器仍然需要运行以计算出该像素的光照。

如果相反,我们有一个填满屏幕的大三角形,只有三个顶点用矩阵数学转换,光栅器会将一个三角形转换为像素。像素着色器的执行次数与前面的示例中执行次数相同。唯一的区别是像素着色器需要进行纹理映射查找,这相对便宜。

+0

谢谢 - 小的后续问题 - 如果你想纹理一个四边形,它会更有效地纹理一个三角形的正方形子区域吗? – AnonDev

+0

@AnDeDev - 这可以取决于硬件。我倾向于单个三角形,因为这不会引入角点到角点对角线,其中像素组从两侧都部分光栅化到边缘。 – Slagh