加载顶点着色器删除所有精灵?

时间:2014-01-25 03:28:20

标签: xna shader xna-4.0

我在XNA 4.0中的效果文件中加载顶点着色器时遇到问题。

因此,如果没有此行,则可以按照我的意愿运行。

VertexShader = compile vs_2_0 VertexShaderFunction();

那么到目前为止我做了什么......真的没有! :)

  1. 加载图片和效果文件。

    protected override void LoadContent()
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);
    
        myTexture = Content.Load<Texture2D>("textures\\fan");
        effect = Content.Load<Effect>("effects\\ashader");
    }
    
  2. 在屏幕上绘制图像。

    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.Black);
    
        // Draw the sprite.
        spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
        effect.CurrentTechnique.Passes[0].Apply();
        spriteBatch.Draw(myTexture, spritePosition,Color.White);
    
        spriteBatch.End();
    
        base.Draw(gameTime);
    
    }
    
  3. 着色

    float4x4 World;
    float4x4 View;
    float4x4 Projection;
    
    struct VertexShaderInput
    {
        float4 Position : POSITION0;
    };
    
    struct VertexShaderOutput
    {
        float4 Position : POSITION0;
    };
    
    VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
    {
        VertexShaderOutput output;
    
        float4 worldPosition = mul(input.Position, World);
        float4 viewPosition = mul(worldPosition, View);
        output.Position = mul(viewPosition, Projection);
    
        return output;
    }
    
    float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
    {
        return float4(1, 0, 0, 1);
    }
    
    technique Technique1
    {
        pass Pass1
        {
            VertexShader = compile vs_2_0 VertexShaderFunction();
            PixelShader = compile ps_2_0 PixelShaderFunction();
        }
    }
    
  4. 这应绘制纹理所在的红色方块。它在没有加载VertexShader的情况下执行此操作。但加载时,根本没有显示纹理。

    那我错过了什么?

0 个答案:

没有答案