トップページ > 過去ログ > 記事閲覧
ClearDrawScreen()の挙動がおかしい
名前:RRR 日時: 2010/07/18 21:50

ウィンドウモードでClearDrawScreen()を実行すると画面の表示がおかしくなります。 縦方向に走査線が走ったようになり、画面が横方向に延びてしまいます。 PC環境のせいかと思われるのですが、 どうすればよいでしょうか? 画像(使っているのはPMD形式です): (ClearDrawScreen()を呼んだとき) ttp://www.hayasoft.com/ahahpany/dx001.jpg (ClearDrawScreen()を呼んでいないとき・正常) ttp://www.hayasoft.com/ahahpany/dx002.jpg ソースは下の通りです。 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle ; ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } ClearDrawScreen(); // 3Dモデルの読み込み ModelHandle = MV1LoadModel( "DxChara.x" ) ; // 画面に映る位置に3Dモデルを移動 MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ; //スケール変更 MV1SetScale( ModelHandle, VGet( 50.0f, 50.0f, 50.0f ) ) ; // 3Dモデルを描画 MV1DrawModel( ModelHandle ) ; // キーの入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } ClearDrawScreen()を呼ばないと正常に描画されます。 フルスクリーンでは問題ありません。 また、他の方が作ったDXライブラリを使用しているプログラムでも同じようになってしまいます。 Log: 1:システムの情報を出力します 3: DXライブラリ Ver3.02e 4: OS WindowsVista ( Build 6002 Service Pack 2 ) 109: CPU動作速度:大体2.09GHz 117: MMX命令を使用します 120: SSE命令が使用可能です 122: SSE2命令が使用可能です 124: CPUベンダ:AuthenticAMD 155: CPU名:AMD Athlon(tm) 64 X2 Dual Core Processor 4000+ 157:COMの初期化... 成功しました 169:メモリ総量:1981.76MB 空きメモリ領域:705.02MB 171:タイマーの精度を検査します 173:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 175: パフォーマンスカウンターを使用します タイマー分解能 : 25000.000000 KHz 180: ソフトの二重起動検査... 二重起動はされていませんでした 186:ウインドウクラスを登録します... 登録に成功しました 190:ウインドウモード起動用のウインドウを作成します 193:ウインドウの作成に成功しました 241:IMEを無効にしました 244:ウインドウスタイルをウインドウモード用に変更します... 完了 251:DirectInput関係初期化処理 253: DirectInput7 の取得中... 成功 273: 引き続き初期化処理... 初期化成功 314: ジョイパッドの初期化... 322: ジョイパッドの初期化は正常に終了しました 324: マウスデバイスの初期化... 初期化成功 329: キーボードデバイスの初期化... 初期化成功 334:DirectInput 関連の初期化は正常に終了しました 336:DirectSound の初期化を行います 338:DirectSound インターフェースの取得を行います.... 成功 345:引き続きインターフェースの初期化処理... 成功 629: DirectSound デバイスを列挙します 632: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 634: モジュール名:{0.0.0.00000000}.{61b74db4-ceea-4df2-a703-516ccb86d479} ドライバ記述:スピーカー (Realtek High Definition Audio) 637: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 639: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 642: 利用可能サンプリング精度 644: プライマリ 16bit = OK 8bit = OK 647: セカンダリ 16bit = OK 8bit = OK 649: 利用可能チャンネル 651: プライマリ MONO = OK STEREO = OK 670: セカンダリ MONO = OK STEREO = OK 672:DirectSound の初期化は正常に終了しました 678:DirectDraw オブジェクトの取得を行います.... 成功 685:引き続き初期化処理... 初期化に成功しました 726:IDirect3D9 オブジェクトを取得します.... 成功 733:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 810:成功 813:Driver:nvd3dum.dll Description:NVIDIA GeForce 6150SE nForce 430 816:画面のフォーマットは D3DFMT_X8R8G8B8 です 818:Zバッファのフォーマットは D3DFMT_D16 です 821:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 823:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 826:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 829:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 831:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 834:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 836:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 839:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 841:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 844:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 846:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 849:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 851:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 853:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 856:Zバッファを作成します.... 成功 880:プログラマブルシェーダーを使用します 888:フォントの初期化を行います 894:フォントの初期化は正常に終了しました 896:文字コードバッファの初期化を行います... 完了しました 1830:フォントの初期化を行います 1836:フォントの初期化は正常に終了しました 1854:DirectInput 関連の終了処理... 完了 1882:DirectSound の終了処理は正常に終了しました 1889:ウインドウを閉じようとしています 1914:ウインドウが破棄されようとしています 1922:ソフトを終了する準備が整いました 1926: 1928:Alloc memory dump 1933: Total size:0(0.000kb) Alloc num:0 1936:

Page: 1 |

Re: ClearDrawScreen()の挙動がおかしい ( No.1 )
名前:いっち 日時:2010/07/18 21:10

私の環境では DxLibの3.02eでも3.02fでも、問題ないように見受けられました。 (ただし、モデルの拡大は2倍で行いました) > PC環境のせいかと思われるのですが、 > どうすればよいでしょうか? とりあえず、グラフィックボードのドライバを更新なさってみてはいかがでしょうか。
Re: ClearDrawScreen()の挙動がおかしい ( No.2 )
名前:RRR 日時:2010/07/18 21:49

アドバイスありがとうございます。 一応ドライバは更新してみましたが 特に改善はみられないようです。
Re: ClearDrawScreen()の挙動がおかしい ( No.3 )
名前:tare 日時:2010/07/19 10:26

裏画面描画にしても変わりませんか?
Re: ClearDrawScreen()の挙動がおかしい ( No.4 )
名前:RRR 日時:2010/07/19 21:33

SetDrawScreen(DX_SCREEN_BACK);と ScreenFlip();を 追加して実行してみましたが変化はないようです。 int ModelHandle ; ChangeWindowMode( TRUE ) ; SetDrawScreen(DX_SCREEN_BACK); // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } ClearDrawScreen(); // 3Dモデルの読み込み ModelHandle = MV1LoadModel( "DxChara.x" ) ; // 画面に映る位置に3Dモデルを移動 MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ; //MV1SetScale( ModelHandle, VGet( 50.0f, 50.0f, 50.0f ) ) ; // 3Dモデルを描画 MV1DrawModel( ModelHandle ) ; ScreenFlip(); // キーの入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ;
Re: ClearDrawScreen()の挙動がおかしい ( No.5 )
名前:RRR 日時:2010/07/19 23:29

ちなみに DxLib Ver3.03でもやってみましたが 同じ結果でした。
Re: ClearDrawScreen()の挙動がおかしい ( No.6 )
名前:管理人 日時:2010/07/20 13:44

スクリーンショットを拝見する限りではドライバの不具合が原因である可能性が高そうです とはいえ、DXライブラリを使用したソフトでのみ発生するとなるとDXライブラリが ClearDrawScreen で 使用している機能が一般的にはあまり使われていないものであることがDXライブラリを使用した ソフトでのみ件の現象が発生する原因となっている可能性があります ClearDrawScreen の処理の中で「これかな?」と思う部分を変更してみましたので、 よろしければその変更を加えたこちらのバージョンをお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: ClearDrawScreen()の挙動がおかしい ( No.7 )
名前:RRR(解決) 日時:2010/07/20 07:33

修正バージョンを試したところ、 正常に描画されました。 迅速な対応ありがとうございます。

Page: 1 |