好的,所以我正在学习本教程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不是我的主要语言。
答案 0 :(得分:0)
好的,没有必要帮助我在2天的思考后得到它,我知道答案。问题是您需要默认的顶点着色器输入和输出,然后着色器正在工作。因此,如果any1对单一游戏中的着色器有问题,请先查看是否有默认的顶点输入和输出。如果some1做同样的教程或similer事情,那么就会把解决方案代码放进去,这样他们就知道问题出在哪里了。
解决方案:Working Effect.fx