在android上使用像素着色器时,巨大的FPS下降

时间:2013-07-27 05:23:26

标签: android opengl-es directx-9 monogame

在我的应用程序中,没有视锥体剔除,无论如何都会绘制相机未看到的物体。当相机没有看到物体时,我的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个小三角形,这不应该是不合理的。

1 个答案:

答案 0 :(得分:1)

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

现在我无法在没有排序所有内容的情况下进行alpha混合.....