【Xbox360】 XNA Game Studio その4 【C#】at GAMEDEV【Xbox360】 XNA Game Studio その4 【C#】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト715:ひげねこ ◆oxtErU/kVM 08/03/03 17:34:28 Q5EkCE5+ >>706 こんな感じです。 // 抜きスプライトを描画 spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState); GraphicsDevice.RenderState.DepthBufferEnable = true; GraphicsDevice.RenderState.ReferenceAlpha = 128; spriteBatch.Draw(...) spriteBatch.End(); // 半透明のスプライトを描画 spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState); GraphicsDevice.RenderState.DepthBufferEnable = true; GraphicsDevice.RenderState.DepthBufferWriteEnable = false; spriteBatch.Draw(...) spriteBatch.End(); // Additveのスプライトを描画 spriteBatch.Begin(SpriteBlendMode.Additive, SpriteSortMode.Immediate, SaveStateMode.SaveState); GraphicsDevice.RenderState.DepthBufferEnable = true; GraphicsDevice.RenderState.DepthBufferWriteEnable = false; spriteBatch.Draw(...) spriteBatch.End(); // メニュー部分を描画 spriteBatch.Begin(); spriteBatch.Draw(...) spriteBatch.End(); 抜きテクスチャを描画する時にZバッファと、Alphaテストを使うのがコツです。こうするとAlpha値が1のものだけが 描画されると同時にZバッファも更新されるのでちゃんとしたdepthを指定すれば順不同に描画しても問題ありません 次にの半透明部分ですが、前の描画でZバッファには情報が入っているので既に描かれているものより手前のピクセルしか描画しません。 Zバッファは参照するけど、更新はしないというのがミソです。続くAddtiveの部分も一緒です。 これで見た目上一番問題のある抜きスプライトとそれ以外のスプライトの前後関係は正しくなります。ただし、半透明同士が重なったとき の前後関係はおかしくなりますが、見た目上の問題は大幅に減るはずです。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch