需要帮助 - Monogame 2d水反射

时间:2016-06-06 21:36:05

标签: xna monogame hlsl

好的,所以我正在学习本教程Water Reflection XNA,当我用monogame调整代码时,我无法获得最终结果。 所以这是我的LoadContent代码:

protected override void LoadContent()
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);

        texture = Content.Load<Texture2D>("test");
        effect = Content.Load<Effect>("LinearFade");
        effect.Parameters["Visibility"].SetValue(0.7f);
    }

和我的抽奖代码:

protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
        //effect.CurrentTechnique.Passes[0].Apply();
        spriteBatch.Draw(texture, new Vector2(texturePos.X, texturePos.Y + texture.Height), null, Color.White * 0.5f, 0f, Vector2.Zero, 1, SpriteEffects.FlipVertically, 0f);
        spriteBatch.End();

        spriteBatch.Begin();
        spriteBatch.Draw(texture, texturePos, Color.White);
        spriteBatch.End();


        base.Draw(gameTime);
    }

最后我的.fx文件: LinearFade

因此,当我应用效果时问题就开始了。我的纹理刚刚消失,如果我在Draw方法中评论效果部分,我会得到带淡化的镜像(混淆alpha“Color.White * 0.5f”)但没有淡化效果,就像他从图片中间到图片底部的教程一样。我仍然没有太多关于单一游戏和着色器的经验,但我正在学习。

如果any1知道如何解决这个问题,或者如何在上面的教程中做到这一点,那就太好了。 Btw sry for bad english不是我的主要语言。

1 个答案:

答案 0 :(得分:0)

好的,没有必要帮助我在2天的思考后得到它,我知道答案。问题是您需要默认的顶点着色器输入和输出,然后着色器正在工作。因此,如果any1对单一游戏中的着色器有问题,请先查看是否有默认的顶点输入和输出。如果some1做同样的教程或similer事情,那么就会把解决方案代码放进去,这样他们就知道问题出在哪里了。

解决方案:Working Effect.fx