トップページ > 過去ログ > 記事閲覧
マスク画面を作成すると、3D描画がまともにできません。
名前:SS 日時: 2011/03/21 21:41

どうしても自分では解決できないので、質問させていただきます。 以下のプログラムを実行させた時に、CreateMaskScreen()があるときとないときで実行結果が変わってしまうのですが、なぜでしょう? ほかにもいろいろ試しましたが、どうもCreateMaskScreen()が実行されているときはまともに3D描画ができていないみたいなのですが・・・。 どうか、ご回答お願いします。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){ //デバック用のウィンドモード ChangeWindowMode(TRUE); SetMainWindowText("test"); SetGraphMode(1024, 768, 32); if (DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK)!=0){ return -1;//初期化と裏画面化 } SetUseZBuffer3D( TRUE ) ; SetWriteZBuffer3D( TRUE ) ; //これをコメントアウトするとなぜか結果が変わります     //マスク画像は一回も使用していないので、これが与える効果はないと思うのですが・・・ CreateMaskScreen() ; DrawTriangle3D( VGet(512.0f,0.0f, 100.0f), VGet(0.0f,768.0f, 100.0f), VGet(1024.0f,768.0f,100.0f), GetColor( 255,0,255 ), true ) ; DrawTriangle3D( VGet(512.0f,0.0f, 0.0f), VGet(0.0f,768.0f, 0.0f), VGet(1024.0f,768.0f,0.0f), GetColor( 255,0,0 ), true ) ; DrawSphere3D( VGet( 512.0f, 384.0f, 0.0f ), 80.0f, 32, GetColor( 0,0,255 ), GetColor( 255, 255, 255), TRUE ); DrawTriangle3D( VGet(512.0f,0.0f, 0.0f), VGet(0.0f,768.0f, 0.0f), VGet(1024.0f,768.0f,0.0f), GetColor( 0,0,255 ), true ) ; DrawSphere3D( VGet( 512.0f, 384.0f, 0.0f ), 80.0f, 32, GetColor( 255,0,0 ), GetColor( 255, 0,255), TRUE ); ScreenFlip(); WaitKey(); InitGraph(); InitSoundMem(); DxLib_End(); return 0; }

Page: 1 |

Re: マスク画面を作成すると、3D描画がまともにできません。 ( No.1 )
名前:管理人 日時:2011/03/05 02:08

テストプログラムを貼り付けていただきありがとうございます 私の環境でも確認することができました 正しく描画結果が得られるように修正したバージョンをアップしましたので、 よろしければお試しください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 不具合は ・描画結果が縦に伸びる   マスク使用時は一時的にマスク画面に描画するのですが、内部でマスク画面を   描画先にした際にビューポート( Direct3D の SetDrawArea のようなもの )の設定を   しなおしていないのが原因 ・赤の三角形と青の球が描画結果になってしまっている   マスク画面の内容を本画面に描画する際にZバッファの使用をOFFにしていなかったのが原因 の二つありました
Re: マスク画面を作成すると、3D描画がまともにできません。 ( No.2 )
名前:SS(解決済み) 日時:2011/03/21 21:41

修正バージョンを適用して実行したら無事に正しい結果が得られました。 迅速な対応ありがとうございます。

Page: 1 |