• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テクスチャに半透明ポリゴンを描画すると透ける??)

テクスチャに半透明ポリゴンを描画すると透けるのはなぜ?

このQ&Aのポイント
  • DirectX9で不透明なテクスチャに半透明ポリゴンを描画すると、ポリゴンを描画した部分が透けてしまう。
  • 不透明なテクスチャに半透明ポリゴンを描くと青の部分が半透明になる。
  • D3DTSS_ALPHAOPをADDにしてもテクスチャが透ける理屈と、透けないようにする手段がわからない。

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

提示された情報だけではレンダーステートの設定がどうなっているのかさっぱり分からないので、はっきりしたことは言えませんが、多分ブレンド係数の計算方法の指定が適切に実行されていないせいでは? pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); // 転送元・転送先の色の算出方法を指定する。 #if 0 // 通常の半透明合成。 pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); #else // 加算合成。 pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE); pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE); #endif // ポリゴン RGBA とテクスチャ RGBA をモジュレートする。 pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT); pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);

vegiruc
質問者

お礼

回答ありがとうございます。 そして、返事が遅くなってしまい申し訳ありません。 //レンダーステートの設定がどうなっているのかさっぱり分からない ごもっともです。ゴメンナサイ・・・。 なるほど、私の知らない設定項目がまだいろいろあるみたいですね。 なんとなく見えてきました。 ありがとうございます。 あとは試行錯誤してみようと思います。

関連するQ&A