MonogameでPixelShaderを実装しようとしています。MonoGame 2D PixelShaderが機能しない
シェーダ(今のところ)は、テクスチャを取り、それを操作しないで戻す必要があります。
sampler MyTex : register(s0);
float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0
{
float4 Color = tex2D(MyTex, coords);
return Color;
}
technique tech
{
pass Pass1
{
PixelShader = compile ps_4_0_level_9_1 PixelShaderFunction();
}
}
私Monogame実装次のようになります。LoadContentで
:
spriteBatch = new SpriteBatch(GraphicsDevice);
texture = Content.Load<Texture2D>("surge");
GraphicsDevice.Textures[0] = texture;
effect = Content.Load<Effect>("sha");
とドロー法で:
GraphicsDevice.Clear(Color.Aquamarine);
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend,null, null, null, effect, null);
spriteBatch.Draw(texture, new Vector2(150, 150), Color.White);
spriteBatch.End();
しかし、それは何も表示されません。 BlendStateをOpaqueに変更すると、テクスチャがあるはずの黒い矩形が表示されます。私はまた、他のSortmodeとBlendStatesを成功せずに変更しようとしました。私は問題を見つけることができないようです。 問題を解決するのに役立つすべての回答、または私がこれを理由に自己憎しみを減らしていることは非常に高く評価されています。
EDIT:リソースバインディング(登録)がシェイダーモデルのバージョン全体で変更された問題はありますか。 誰か助けてください!
感謝を試みるかもしれませんが、そのshaderfileと私もコンパイルすることはできません。 MSBuild \ MonoGame \ v3.0 \ MonoGame.Content.Builder.targets(90,5):エラーMSB3073:[..]コード1で終了しました – Steffen