J'essaie d'implémenter un PixelShader en Monogame. Le shader (pour l'instant) devrait juste prendre une texture et la rendre non manipulée.MonoGame 2D PixelShader ne fonctionne pas
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();
}
}
mes implémentations monogame ressemble à ceci:
dans LoadContent:
spriteBatch = new SpriteBatch(GraphicsDevice);
texture = Content.Load<Texture2D>("surge");
GraphicsDevice.Textures[0] = texture;
effect = Content.Load<Effect>("sha");
et dans la méthode draw:
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();
Mais il ne montre rien. Changer le BlendState en Opaque me donne un Rectangle noir où la texture devrait être. J'ai également essayé de changer To other Sortmodes et BlendStates sans succès. Je n'arrive pas à trouver le problème. Toute réponse qui aide à résoudre le problème ou diminue la haine de soi que j'ai à cause de cela est très appréciée!
EDIT: Le problème est-il que la liaison de ressources (enregistrement) a été modifiée dans les versions du modèle de shader ?! Quelqu'un s'il vous plaît aider!
Merci pour votre réponse, mais avec ce shaderfile je ne peux même pas compiler. MSBuild \ MonoGame \ v3.0 \ MonoGame.Content.Builder.targets (90,5): erreur MSB3073: [..] terminé avec le code 1 – Steffen