現在コーディング中のゲームに実装しようとしているパーティクル エンジンで問題が発生しました。黒の背景では問題ないように見えますが、パーティクルを追加すると背景とブレンドされることを忘れていました。パーティクルが背景とブレンドするのを防ぎ、互いにブレンドするだけにする方法はありますか?
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null);
Main.TileMap.Draw(spriteBatch);
spriteBatch.End();
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null);
Main.ParticleManager.Draw(spriteBatch);
spriteBatch.End();
ここに私が何を意味するかを示すいくつかの画像があります:
編集:テクスチャにレンダリングして画面に描画することで解決しました。固定コードは次のとおりです。
RenderTarget2D renderTarget;
Texture2D particleMap;
public void LoadContent(ContentManager content)
{
renderTarget = new RenderTarget2D(Main.graphicsDevice, pp.BackBufferWidth, pp.BackBufferHeight, true, Main.graphicsDevice.DisplayMode.Format, DepthFormat.Depth24);
}
public void Draw(SpriteBatch spriteBatch)
{
Main.graphicsDevice.SetRenderTarget(renderTarget);
Main.graphicsDevice.Clear(Color.Transparent);
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null);
Main.ParticleManager.Draw(spriteBatch);
spriteBatch.End();
Main.graphicsDevice.SetRenderTarget(null);
particleMap = (Texture2D)renderTarget;
Main.graphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
Main.TileMap.Draw(spriteBatch);
spriteBatch.Draw(particleMap, new Vector2(0, 0), null, Color.White, 0, new Vector2(0, 0), 1f, SpriteEffects.None, 1);
spriteBatch.End();
}