我在XNA 4.0中渲染1000个立方体时遇到问题。 我还没有找到类似的问题解决方案,所以我发布了这个问题。 FPS下降到21(基本30)。 我不知道如何解决它。这肯定是渲染的问题。 我使用了简单的着色器如下:
uniform extern float4x4 WorldViewProj : WORLDVIEWPROJECTION;
struct VS_OUTPUT
{
float4 position : POSITION;
float4 color : COLOR0;
};
VS_OUTPUT VS(float4 Pos : POSITION)
{
VS_OUTPUT Out = (VS_OUTPUT)0;
Out.position = mul(Pos, WorldViewProj);
Out.color = float4(1,1,1,1);
return Out;
}
float4 PS( VS_OUTPUT vsout ) : COLOR
{
return vsout.color;
}
technique TransformTechnique
{
pass P0
{
vertexShader = compile vs_2_0 VS();
pixelShader = compile ps_2_0 PS();
}
}
并使用它:
public static void RenderModel(Model model, Texture2D texture, Effect effect,
Matrix view, Matrix projection, Vector3 position)
{
var world = Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up);
var worldViewProjection = world * view * projection;
effect.Parameters["WorldViewProj"].SetValue(worldViewProjection);
effect.CurrentTechnique = effect.Techniques["TransformTechnique"];
// Assign effect to model
foreach (ModelMesh mesh in model.Meshes)
{
foreach (ModelMeshPart part in mesh.MeshParts)
{
part.Effect = effect;
}
}
foreach (var mesh in model.Meshes)
{
mesh.Draw();
}
}
我需要渲染大约一万个或更多的立方体。