我要开发的directX应用程序可以通过两种方式实现 - 一种是我们有大量三角形和相关颜色,另一种是三角形数量较少但通过生成纹理的纹理贴图添加细节。顶点处理与像素着色的相对费用
我已经足够新的GPU硬件,我没有这两种方法的代价直觉 - 我的猜测是处理大量的顶点比少量的顶点更昂贵,但有些从像素着色器中添加细节,但无法在硬件方面证明这一点。
任何人都可以解释如何思考这个问题,或者这是否是正确的思维方式?
任何帮助表示赞赏
Anondev
我要开发的directX应用程序可以通过两种方式实现 - 一种是我们有大量三角形和相关颜色,另一种是三角形数量较少但通过生成纹理的纹理贴图添加细节。顶点处理与像素着色的相对费用
我已经足够新的GPU硬件,我没有这两种方法的代价直觉 - 我的猜测是处理大量的顶点比少量的顶点更昂贵,但有些从像素着色器中添加细节,但无法在硬件方面证明这一点。
任何人都可以解释如何思考这个问题,或者这是否是正确的思维方式?
任何帮助表示赞赏
Anondev
更有效地使用大量的多边形和他们使用的纹理细节。这就是纹理映射存在的原因。这是试图使平面显得更加细致。凹凸贴图技术通过使光照像多边形不平坦一样进一步增强效果。
然而,这绝不会看起来像使用多边形作为现实的,因为问题,如silouette是平等
如果你想象的三角形如此之小,他们最终采取了一个像素在屏幕上。每个像素必须使用矩阵数学计算其位置,每个多边形将被交给光栅器并转换为单个像素,每个像素将被发送到像素着色器。这是很多工作,像素着色器仍然需要运行以计算出该像素的光照。
如果相反,我们有一个填满屏幕的大三角形,只有三个顶点用矩阵数学转换,光栅器会将一个三角形转换为像素。像素着色器的执行次数与前面的示例中执行次数相同。唯一的区别是像素着色器需要进行纹理映射查找,这相对便宜。
看看游戏是如何处理这个问题的。他们使用凹凸贴图等技术来伪造较低的多边形数量。我认为你的逻辑是正确的,因为你想要保守你的多边形。如果我是你,我会问自己,如果我不能使用更多的多边形,我是否可以使用着色器。 –