在Android上使用像素着色器时,FPS会大幅下降

汤玛士

在我的应用程序中,没有进行平截头体剔除,无论如何都无法绘制相机看不到的对象。当相机不注视物体时,我的android设备上的fps接近60。当看物体时,我的fps下降到约15。

因此,我认为这是我的像素着色器存在的问题。因为我使用monogame,所以着色器实际上是使用DirectX着色器模型3.0编写的。以下是我的纹理采样器声明和像素着色器。(这是使用的唯一像素着色器)

texture2D tex1;

sampler2D tex1Sampler = sampler_state
{
    Texture = <tex1>;
    MinFilter = Point;   
    MagFilter = Point;   
    MipFilter = Point;   

    AddressU = Clamp;  
    AddressV = Clamp;
};

float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
{
    float4 color =  tex2D(tex1Sampler,input.Texture);
    clip(color.a - .12f);
    color *= input.Tint;
    return color;
}

是什么导致FPS下降?其他一些信息:使用的纹理尺寸为250 x 250,这是我的测试中使用的唯一纹理。

这也不是荒谬的,例如十亿个三角形彼此并排排列,并且没有启用背面剔除。就像场景中的1000个小三角形一样,这也不是没有道理的。

汤玛士

从像素着色器中删除了Clip()并增加了30 fps。

现在,如果不对所有内容进行排序,我将无法真正进行Alpha混合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章