【Xbox360】 XNA Game Studio その4 【C#】at GAMEDEV
【Xbox360】 XNA Game Studio その4 【C#】 - 暇つぶし2ch715:ひげねこ ◆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の部分も一緒です。

これで見た目上一番問題のある抜きスプライトとそれ以外のスプライトの前後関係は正しくなります。ただし、半透明同士が重なったとき
の前後関係はおかしくなりますが、見た目上の問題は大幅に減るはずです。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch