トップページ > 過去ログ > 記事閲覧
Draw○○ToZBufferについて
名前:Aquid 日時: 2009/09/17 22:24

こんばんは、Aquidです。 Zバッファを使用して画像部分以外に対して描画しようとDraw○○ToZBuffer系関数を使用すると DrawRotaGraphToZBufferとDrawModiGraphToZBufferの二つを使用したときのみ正常に描画することができません。 ただ、DX_ZWRITE_CLEARとDX_ZWRITE_MASKを入れ替える(つまり画像部分のみに対して描画しようとする)と正常に描画されます。 これは環境に依存してしまうものなのでしょうか? 実行環境は ・WindowsXP + GeForce 8400GS ・WindowsVista + Intel GMA 950 (どちらもウィンドウモード、画面の色32ビットです) ライブラリのバージョンは3.00b(2009年9月17日、21:57:04にダウンロードしてきたものを使用)です。 ・使用したソース (画像は ttp://www.aquafactory.x0.com/dxlib/zbuftest.bmp ) #include "DxLib.h" // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ){ MessageBox(NULL,"DirectXの初期化に失敗。\n","Error",MB_OK); return -1 ; // エラーが起きたら直ちに終了 } //テスト用画像をロード int TestGraph=LoadGraph("zbuftest.bmp"); //メインループ while(ProcessMessage() == 0){ SetDrawScreen(DX_SCREEN_BACK); ClearDrawScreen(); //Zバッファを有効にする SetUseZBufferFlag(TRUE); //画面全体のマスクを一度初期化する DrawBoxToZBuffer(0,0,640,480,TRUE,DX_ZWRITE_CLEAR); //さまざまな描画関数を用いてマスクで覆う DrawGraphToZBuffer(0,0,TestGraph,DX_ZWRITE_MASK); DrawTurnGraphToZBuffer(128,0,TestGraph,DX_ZWRITE_MASK); DrawExtendGraphToZBuffer(256,0,256+256,128,TestGraph,DX_ZWRITE_MASK); //以下2つの関数では何故か正常に覆えない DrawRotaGraphToZBuffer(64,128 +64,1.0f,0.5f,TestGraph,DX_ZWRITE_MASK); DrawModiGraphToZBuffer(128,128,256,128,224,224,128,256,TestGraph,DX_ZWRITE_MASK); //単純図形 DrawBoxToZBuffer(0,256,128,256+64,FALSE,DX_ZWRITE_MASK); DrawCircleToZBuffer(128+64,256+64,64,FALSE,DX_ZWRITE_MASK); DrawBoxToZBuffer(256,256,256+128,256+64,TRUE,DX_ZWRITE_MASK); DrawCircleToZBuffer(384+64,256+64,64,TRUE,DX_ZWRITE_MASK); //Zバッファマスクがかかってないところを描画する DrawBox(0,0,640,480,GetColor(255,255,255),TRUE); ScreenFlip(); clsDx(); }; //DxLibを破棄 DxLib_End(); //でもって終了! return 0 ; } ・WindowsXP + GeForce 8400GS上でのLog.txt 461:IDirect3D9 オブジェクトを取得します.... 成功 466:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 557:成功 557:画面のフォーマットは D3DFMT_X8R8G8B8 です 557:Zバッファのフォーマットは D3DFMT_D16 です 557:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 557:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 557:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 558:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 558:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 558:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 558:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 558:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 559:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 559:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 559:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 559:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 559:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 560:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 560:Zバッファを作成します.... 成功 569:プログラマブルシェーダーを使用します

Page: 1 |

Re: Draw○○ToZBufferについて ( No.1 )
名前:管理人 日時:2009/09/21 09:04

ご報告ありがとうございます DrawRotaGraphToZBuffer と DrawModiGraphToZBuffer も正常に機能するように 修正したバージョンをアップしましたので、よろしければお使いください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: Draw○○ToZBufferについて ( No.2 )
名前:Aquid 日時:2009/09/25 22:05

迅速な対応ありがとうございます。 こちらの環境でも無事想定通りの描画がされました。

Page: 1 |