トップページ > 記事閲覧
DrawPolygon3Dと DrawBoxの描画
名前:Sura 日時: 2015/09/04 21:05

ScreenFlip()によるループ処理において、 DrawFillBox()による描画の後DrawPolygon3D()の処理をを行うと上手く描画できないようです。 以下のソースプログラムで確認いたしました。 お手数ですが、もし不具合であれば修正願いたいと思います。 ※ DXLib Ver 3.15b, Win7 64bit //------------------------------ #include <DxLib.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (DxLib_Init() < 0) return -1; SetDrawScreen(DX_SCREEN_BACK); VECTOR ctr = VGet(320.0f, 240.0f, 0.0f), axis = VGet(1.0f, 0.0f, 0.0f); VERTEX3D tag[3]; float th = 1.0f * 3.14159265f / 180.0f; for (int i = 0; i < 3; ++i) { tag[i].pos = VAdd(VGet((float)(i - 1) * 100.0f, (float)((i + 1) % 3 - 1) * 100.0f, 0.0f), ctr); tag[i].norm = VGet(0.0f, 0.0f, -1.0f); tag[i].dif = GetColorU8(255, 0, 0, 255); tag[i].spc = GetColorU8(0, 0, 0, 0); } while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { DrawFillBox(0, 0, 640, 480, GetColor(200, 200, 200)); //ClearDrawScreen(); //DrawFillBoxをコメントアウトしてClearDrawScreenのコメントを外すと、 //正常に描画される // Zバッファを有効にする SetUseZBuffer3D(TRUE); SetWriteZBuffer3D(TRUE); //頂点の回転を計算 MATRIX rm = MGetRotAxis(axis, th); for (int i = 0; i < 3; ++i) { VECTOR tpos = VSub(tag[i].pos, ctr); tpos = VTransformSR(tpos, rm); tag[i].pos = VAdd(tpos, ctr); } // ポリゴンの描画 DrawPolygon3D(tag, 1, DX_NONE_GRAPH, FALSE); // Zバッファを無効にする SetUseZBuffer3D(FALSE); SetWriteZBuffer3D(FALSE); // 裏画面の表示 ScreenFlip(); } DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: DrawPolygon3Dと DrawBoxの描画 ( No.1 )
名前:管理人 日時:2015/09/05 02:44

ClearDrawScreen と異なり DrawFillBox を使用した場合は Zバッファが初期化されないので、 載せていただいたプログラムで発生する見た目は仕様通りの描画結果です もし背景色を真っ黒以外にしたいということでしたら SetBackgroundColor をお使いください m(_ _)m // ClearDrawScreen で行われるクリア処理後の画面の色を設定する( Red,Green,Blue:それぞれ 0〜255 ) int SetBackgroundColor( int Red, int Green, int Blue ) ;
メンテ
Re: DrawPolygon3Dと DrawBoxの描画 ( No.2 )
名前:Sura(解決) 日時:2015/09/05 09:14

了解しました。 お手数おかけしました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存