在我的应用程序中,没有视锥体剔除,无论如何都会绘制相机未看到的物体。当相机没有看到物体时,我的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个小三角形,这不应该是不合理的。
答案 0 :(得分:1)
从像素着色器中删除了Clip()并增加了30 fps。
现在我无法在没有排序所有内容的情况下进行alpha混合.....