トップページ > 過去ログ > 記事閲覧
画像の重ね合わせ
名前:Samael 日時: 2008/03/03 17:58

始めまして、先日DXライブラリのことを知ったばかりの初心者です。 質問は画像処理のことなのですが、DXライブラリを使う以前のプログラムで D3DCOLOR color = D3DCOLOR_XRGB(255, 255, 255); D3DTLVERTEX2 v[] = { { x1 - 0.5f, y1 - 0.5f, 0, 1, color, sx1 / TexMOB.GetTexWidth(), sy1 / TexMOB.GetTexHeight(), 0 + move, 0 + move}, { x2 - 0.5f, y1 - 0.5f, 0, 1, color, sx2 / TexMOB.GetTexWidth(), sy1 / TexMOB.GetTexHeight(), 0.5 + move, 0 + move}, { x1 - 0.5f, y2 - 0.5f, 0, 1, color, sx1 / TexMOB.GetTexWidth(), sy2 / TexMOB.GetTexHeight(), 0 + move, 0.5 + move}, { x2 - 0.5f, y2 - 0.5f, 0, 1, color, sx2 / TexMOB.GetTexWidth(), sy2 / TexMOB.GetTexHeight(), 0.5 + move, 0.5 + move}, } ; D3D.pD3DDevice->SetTexture(0, TexMOB.GetTexture());//キャラクター D3D.pD3DDevice->SetTexture(1, TexEf.GetTexture());//エフェクト用画像 // ステージ0の設定 D3D.pD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); D3D.pD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); D3D.pD3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); // ステージ1の設定 D3D.pD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE ); D3D.pD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT ); D3D.pD3DDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_MODULATE ); D3D.pD3DDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_MODULATE); D3D.pD3DDevice->SetTextureStageState(1,D3DTSS_ALPHAARG1,D3DTA_TEXTURE); D3D.pD3DDevice->SetTextureStageState(1,D3DTSS_ALPHAARG2,D3DTA_CURRENT); D3D.pD3DDevice->SetFVF(D3DTLVERTEX2::FVF); D3D.pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, v, sizeof(D3DTLVERTEX2)); このように、テスクチャステージを使用して、移動するキャラ(アルファチャンネルを使用して透過している2Dのドット絵)の上だけにエフェクト用の画像をブレンドして表示していたのですが、同じようなことをDXライブラリで行う場合どのような方法がありますでしょうか。

Page: 1 |

Re: 画像の重ね合わせ ( No.1 )
名前:Samael 日時:2008/03/03 18:01

よろしくお願いします。
Re: 画像の重ね合わせ ( No.2 )
名前:管理人 日時:2008/03/08 21:59

うーん、申し訳ありません、何か動くサンプルはありますでしょうか? こちらの設定でどのような効果が表れるのかが今ひとつイメージできません・・・m(_ _;m
Re: 画像の重ね合わせ ( No.3 )
名前:かたぱると 日時:2008/03/11 18:57

コードを見る限りテクスチャステージで重ねている部分着目し 『好き勝手移動するキャラクターに必ず重なって表示される半透明エフェクト』 を表現したいのではないでしょうか、とかってに推察。 (STGで言うところのバリアーみたいな?) DxLibでは画像オブジェクトは個々で表示するものであり 画像オブジェクトに他画像を登録してまとめて扱うようなものはなかった…ハズのような。 通常であればキャラクター座標を見て半透明エフェクトをその座標に重ね合わせて表示させてあげる処理が必要になります。 無理やり実現させるようなものであれば case@キャラクターに半透明エフェクトを重ねて表示して用意し、今後は    GetDrawScreenGraphにてその『重ね合わせた後』の絵を取得して一枚の絵として扱う caseAメモリ上にキャラクター+半透明エフェクトを重ねて描画した絵をあらかじめ用意して    CreateGraphFromMemでメモリ上からグラフィックハンドルを作成して一枚の絵として扱う 等でしょうか。 どちらのcaseもリアルタイムに絵を更新する場合には向きませんのでやはり通常の処理をお勧めします。 と、勝手に推察しましたが全然的外れだった場合は黙殺して下さい…。

Page: 1 |