【DXライブラリ】SetDrawScreenで3Dがうまく表示されない

公開日: : 最終更新日:2014/08/14 DXライブラリ

スポンサーリンク

グラフィックハンドルを用いて描画を行いたいという場合があるかもしれないのですが、その際3次元が描画されないというバグ?があったので書いておきます。

まずSetDrawScreenを用いるとカメラ関係が一度リセットされてしまうようで、使う場合はもちろんカメラ関係にも気を使う必要があります。
そうじゃない場合でもなぜか3Dがうまく表示されない場合がありました。

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	int ModelHandle ;
	int Screen ;
	SetMainWindowText( "test" ) ;		//ウィンドウ名
	ChangeWindowMode( TRUE ) ;
	SetWindowSizeChangeEnableFlag( TRUE ) ;
	// DXライブラリの初期化
	if( DxLib_Init() < 0 )
	{
		// エラーが発生したら直ちに終了
		return  -1;
	}
	SetGraphMode( 640,480 , 32 ) ;
	// 3Dモデルの読み込み
	ModelHandle = MV1LoadModel( "model.mqo" ) ;
	// 画面に映る位置に3Dモデルを移動
	MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ;
	// 描画可能なグラフィックの作成
	Screen = MakeScreen( 640, 480, FALSE ) ;
	//// 画面を初期化
	//ClearDrawScreen() ;//←①
	// 描画先を描画可能がグラフィックに設定
	SetDrawScreen( Screen ) ;
	//// 画面を初期化
	//ClearDrawScreen() ;//←②
	// 3Dモデルの描画
	MV1DrawModel( ModelHandle ) ;
	DrawString(10,10,"TEST",GetColor(255,0,0));
	// 描画先を裏画面に変更
	SetDrawScreen( DX_SCREEN_BACK ) ;
	// 描画可能なグラフィックを描画
	DrawGraph( 0, 0, Screen, FALSE ) ;
	// 裏画面の内容を表画面に反映
	ScreenFlip() ;
	// キーの入力待ち
	WaitKey() ;
	// DXライブラリの後始末
	DxLib_End() ;
	// ソフトの終了
	return 0 ;
}

ちょっと見ずらいかもしれませんが、例えば上のような場合でコメントアウトされているClearDrawScreenが①,②の二つがあると思います。
ここでのほうにClearDrawScreenを書く(①のコメントアウトをはずす)と2Dは描画されるのですが3Dは表示されない場合があります。

その場合はSetDrawScreenの後にClearDrawScreenを書く(②のほうのコメントアウトを外す)とうまく3Dが表示されるようになります。

ただ、おそらく環境によって描画ができる、できないが分かれているのだと思います。①にしてもパソコンによっては描画されました。一方、なぜかグラボを積んでいるパソコンでは①の場合は2D描画のみとなってしまいました。(使用したパソコンのOSは両方win7)

ちょっと原因は明確ではありませんが、同じ症状の方は試してみてください。

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

DXライブラリで3D文字を描画

DXライブラリで直接3D文字を描画するような関数は今のところ(2013/7)ないと思います。もし3D

記事を読む

Comment

  1. tigershark より:

    DXライブラリを 3.08⇒3.10c にUPしたら突然動かなくなって、
    5時間くらい四苦八苦してました。
    ②の後に書いたら3.10cでも描画できました。
    なんなのですかねえ・・・。
    情報ありがとうございます。

  2. ががんぼ より:

    解決されたようでよかったです。

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業

【PHP】headerでContent-Typeを指定したのに効かない場合の対処法

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようと

スマホ向け幅固定サイトの回転時の幅対応方法

幅固定サイトでのスマホ回転時Webサイトの横幅を合わせる方法のメモ。

【PHP】特定のURLからそのAtomやRSSのフィードを抽出する方法

特定のURLからRSSやATOMのフィードを抽出する方法をメモ。 流

フィード抽出ツール(RSS1.0、RSS2.0、atom)

任意URL サイト名 サイトURL RSS1.0

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑