性能方面,是否有必要停止绘制Aren在屏幕上的纹理?

时间:2014-12-31 02:37:44

标签: c# xna textures xna-4.0 spritebatch

我几乎把问题放在标题中。如果我停止绘制目标在屏幕上不再显示它会对性能有帮助吗?我的意思是:

if (textureLocation is on the screen)
{
    draw code here
}

或者它是如此微不足道(如果有的话)它并不重要?

谢谢,
Shyy

1 个答案:

答案 0 :(得分:2)

取决于。最终花费的时间可归结为三件事:向GPU发送数据,顶点着色和像素着色。

如果纹理位于具有在屏幕上绘制的其他纹理的spritesheet上,并且屏幕外绘制调用与其他纹理调用在同一.Begin() .End()块内,则它不会影响性能,因为它只需要只要发送数据并为spritesheet设置GPU。 4个离屏顶点将穿过顶点着色器,但这不是瓶颈。图形管道剔除顶点着色器和像素着色器之间的屏幕外对象,因此它不会在像素着色器中花费任何时间

但是如果它是一个独立的纹理或者它自己的.Begin() .End()块,那么将它的数据发送到GPU会花费时间,即使GPU会剔除它。

无论是重要的还是不仅仅是剖析可以告诉你。