在我的应用程序中,没有进行平截头体剔除,无论如何都无法绘制相机看不到的对象。当相机不注视物体时,我的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] 删除。
我来说两句