トップページ > 過去ログ > 記事閲覧
3D上の2DGC表示について
名前:sgi 日時: 2012/02/11 01:33

いつもDXライブラリを使わせていただいてます。 DrawBillboard3Dを使ってα値のある画像を描画したいのですが、複数枚の画像を描画したとき、透過された部分とその奥に透過色でない部分が重なっているとその奥の画像が描画されません。 奥にあるモデルはきちんと描画されますし、テクスチャでも描画可能です。しかしDrawBillboard3Dで描画した画像は透過されません。 具体的に言うと、爆発エフェクト用画像のようなものを並べて火炎放射の演出をしたいと考えています。 しかし、その火炎放射を放出している方の反対から見ると、炎が透けて放出している物体(モデル)が丸見えなわけです。 バグかな?っと思ったので質問させていただきます。 経験と知識が深いわけではないのでよく分かりませんが仕様でしたらすいません。

Page: 1 |

Re: 3D上の2DGC表示について ( No.1 )
名前:いっち 日時:2012/02/11 17:03

仰りたいことがよく理解できていない気がするのですが、以下のような事象でしょうか? だとすると、オブジェクトをカメラに対してZソートしてから描画することで解決すると思います。 //- 以下、テストコード ("test1.bmp" "src2.tga" を使用)-// #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { ChangeWindowMode( TRUE ); SetWindowText( "DxLib:" DXLIB_VERSION_STR ); if ( DxLib_Init( ) == -1 ) return -1; int white = GetColor( 255, 255, 255 ); int gh1 = LoadGraph( "test1.bmp"); int gh2 = LoadGraph( "src2.tga" ); SetDrawScreen( DX_SCREEN_BACK ); SetBackgroundColor( 128, 128, 128 ); SetUseZBuffer3D( TRUE ); SetWriteZBuffer3D( TRUE ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen( ); DrawFormatString( 0, 0, white, "TEST" ); DrawBillboard3D( VGet( 320.0f, 240.0f, 50.0f ), 0.5f, 0.5f, 200.0f, 0.0f, gh2, TRUE ); DrawBillboard3D( VGet( 320.0f, 240.0f, 100.0f ), 0.5f, 0.5f, 120.0f, 0.0f, gh1, TRUE ); ScreenFlip( ); } DxLib_End( ); return 0; }
Re: 3D上の2DGC表示について ( No.2 )
名前:sgi 日時:2012/02/11 23:16

はいその通りです。 Zソートでググったらよく分かりましたありがとうございます。

Page: 1 |