在XNA 4.0中渲染1000个多维数据集的性能问题

时间:2011-08-20 21:12:04

标签: performance xna shader xna-4.0

我在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();
    }
}

我需要渲染大约一万个或更多的立方体。

0 个答案:

没有答案