トップページ > 過去ログ > 記事閲覧
v3.00にすると真っ黒画面に
名前:とん 日時: 2009/09/14 17:16

はじめまして。いつも有り難く利用させて頂いております。 以下全て、BCC版での話です。 先日、v3.00(v3.00aも試しました)にアップデートしたところ、これまで作っていたモノや、 (v3.00でコンパイルされたと思われる)サンプル及び点を打つだけプログラムなど 全て黒画面で表示されるようになりました。 SetUseDirectDrawFlag(FALSE); を追加すると表示されるようになりました。 ライブラリをv2.25に戻すと、これまで通り普通に表示されるようになりました。 私の環境的な問題でしょうか? グラフィックボードは、nVidia GeForce7600GSです。 ↓ログを貼り付けます。 1:システムの情報を出力します 1: DXライブラリ Ver3.00a 1: OS WindowsXP ( Build 2600 Service Pack 3 ) 102: CPU動作速度:大体3.00GHz 102: MMX命令を使用します 102: SSE命令が使用可能です 102: SSE2命令が使用可能です 102: CPUベンダ:GenuineIntel 103: CPU名: Intel(R) Pentium(R) 4 CPU 3.00GHz 104:COMの初期化... 成功しました 128:メモリ総量:2047.29MB 空きメモリ領域:1587.41MB 129:タイマーの精度を検査します 129:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 130: パフォーマンスカウンターを使用します タイマー分解能 : 2992590.000000 KHz 130: ソフトの二重起動検査... 二重起動はされていませんでした 131:ウインドウクラスを登録します... 登録に成功しました 131:ウインドウモード起動用のウインドウを作成します 139:ウインドウの作成に成功しました 169:IMEを無効にしました 371:ウインドウスタイルをウインドウモード用に変更します... 完了 372:DirectInput関係初期化処理 372: DirectInput7 の取得中... 成功 385: 引き続き初期化処理... 初期化成功 386: ジョイパッドの初期化... 395: 入力装置を見つけました 399: デバイスの登録名:Microsoft Xbox 360 Controller 399: デバイスの製品登録名:Microsoft Xbox 360 Controller 400: ジョイパッドの追加は正常に終了しました 401: ジョイパッドの初期化は正常に終了しました 401: マウスデバイスの初期化... 初期化成功 401: キーボードデバイスの初期化... 初期化成功 406:DirectInput 関連の初期化は正常に終了しました 406:DirectSound の初期化を行います 406:DirectSound インターフェースの取得を行います.... 成功 408:引き続きインターフェースの初期化処理... 成功 468: DirectSound デバイスを列挙します 469: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 470: モジュール名: ALCXWDM.SYS ドライバ記述:Realtek AC97 Audio 470: 最大サンプリングレート:192.00KHz 最小サンプリングレート:0.10KHz 470: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 470: 利用可能サンプリング精度 470: プライマリ 16bit = OK 8bit = OK 470: セカンダリ 16bit = OK 8bit = OK 471: 利用可能チャンネル 471: プライマリ MONO = OK STEREO = OK 471: セカンダリ MONO = OK STEREO = OK 471:DirectSound の初期化は正常に終了しました 478:DirectDraw オブジェクトの取得を行います.... 成功 480:引き続き初期化処理... 初期化に成功しました 482:IDirect3D9 オブジェクトを取得します.... 成功 490:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 552:成功 553:画面のフォーマットは D3DFMT_X8R8G8B8 です 553:Zバッファのフォーマットは D3DFMT_D16 です 553:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 553:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 553:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 553:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 553:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 554:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 554:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 554:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 554:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 554:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 554:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 554:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です 555:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 555:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 555:Zバッファを作成します.... 成功 556:プログラマブルシェーダーを使用します 565:フォントの初期化を行います 568:フォントの初期化は正常に終了しました 568:文字コードバッファの初期化を行います... 完了しました 8830:フォントの初期化を行います 8834:フォントの初期化は正常に終了しました 8839:DirectInput 関連の終了処理... 完了 8848:DirectSound の終了処理は正常に終了しました 8852:ウインドウを閉じようとしています 8856:ウインドウが破棄されようとしています 8857:フォントの初期化を行います 8857:フォントの初期化は正常に終了しました 8861:ソフトを終了する準備が整いました 8864: 8864:Alloc memory dump 8865: size:348(0.340kb) file: line:0 ID:6 addr:0015a1f8 data:<X...............> [58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00] 8865: size:56(0.055kb) file: line:0 ID:0 addr:0015a178 data:<................> [00 00 00 00 f8 a1 15 00 00 00 00 00 00 00 00 00] 8865: Total size:404(0.395kb) Alloc num:2 8866:

Page: 1 |

Re: v3.00にすると真っ黒画面に ( No.1 )
名前:Masao 日時:2009/09/15 10:44

こちらでも同様の症状を確認しております。 現在開発中のゲームで、ライブラリを3.00に更新したところ、スタッフ内から3名ほど報告がありました。 (全体人数の半分弱ぐらいです。) 一応ビルド環境を残しておきます。 Windows XP SP3 Visual C++ 2008 Express Edition ライブラリバージョン: 3.00 / 3.00a いずれも真っ黒。 >SetUseDirectDrawFlag(FALSE); >を追加すると表示されるようになりました。 3名のうち1名に、これを追加したファイルを渡して試していただきましたが、真っ暗のままだった。とのことです。 (設置場所は、DxLib_Init() の直後です。) 2.25b に戻して今は対応していますが、このバグ(?)が修正されることを期待しております。
Re: v3.00にすると真っ黒画面に ( No.2 )
名前:山崎 日時:2009/09/15 10:13

いつもお世話になっております。 さきほど、私の方でも、DXライブラリのバージョンを 3.00aに更新したところ、画面に何も表示されなくなりました。 それまで使っていた2.25に戻すと、それまでどおり描画されました。 環境は、 OS Windows XP SP3 Visual C++ 2008 Professional Edition です。
Re: v3.00にすると真っ黒画面に ( No.3 )
名前:管理人 日時:2009/09/15 22:58

>とんさん Masaoさん 山崎さん ご報告ありがとうございます 私の環境で再現しないので原因が何なのかは分かっていませんが 原因と思われる箇所を修正したバージョンをアップしましたので よろしければこちらのバージョンをお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) もし上記のバージョンでも駄目でしたら・・・ 申し訳ありませんが原因を突き止めるために テスト用プログラムをお試しになってみていただけないでしょうか? もしご承諾いただけるのでしたら、大変お手数ですがこちらのファイルを ダウンロードしてください m(_ _;m http://homepage2.nifty.com/natupaji/temp/Ver3_00bTest.exe 中には以下のファイルが含まれています KabeTex.bmp // テストプログラムで使用する画像 Ver3_00bTest.cpp // テストプログラムのソース Ver3_00b_Window.exe // テストプログラムをウインドウモードで起動する実行ファイル Ver3_00b_Full_Discard.exe // テストプログラムをフルスクリーンモードで起動する実行ファイルその1 Ver3_00b_Full_Flip.exe // テストプログラムをフルスクリーンモードで起動する実行ファイルその2 Ver3_00b_Full_Copy.exe // テストプログラムをフルスクリーンモードで起動する実行ファイルその3 上記の4つの実行ファイルはそれぞれ実行すると、正常に動作した場合は 画面上部に KabeTex.bmp が左右に移動する映像が表示されます。( 何かキーを押すと終了します ) 4つの実行ファイルはウインドウモードで起動する Ver3_00b_Window.exe だけ DxLib_Init の前に ChangeWindowMode( TRUE ) ; を記述してウインドウモードで 起動していますが、基本的にはすべて同じプログラムで、唯一裏画面の内容を 表画面に反映させる方法だけが違います。( といっても Direct3D9Device を 作成する際に設定するパラメータの一つを変更しているだけですが・・・ ) 大変お手数ですが、4つの実行ファイルを起動して、それぞれ画面に何か 表示されるかどうかを教えていただけないでしょうか? よろしくお願いします
Re: v3.00にすると真っ黒画面に ( No.4 )
名前:とん 日時:2009/09/16 08:52

>管理人さま 早速の御対応ありがとうございます。 上記ライブラリに更新後再構築を試しましたが以前と同様で、改善されませんでした。 テスト用プログラムも試しました。 ・Ver3_00b_Full_Copy.exe ・Ver3_00b_Full_Discard.exe ・Ver3_00b_Full_Flip.exe フルスクリーンで起動後、真っ黒画面が表示されました。 ・Ver3_00b_Window.exe ウィンドウで起動後、真っ黒画面が表示されました。 何度か真っ黒画面と書きましたが、 更新されている黒い画面ではなく、 上に別ウィンドウを載せると残像が残るタイプの、 更新されていない画面です。 何かの参考になればと思います。 >Masaoさま 私の方で、 SetUseDirectDrawFlag(FALSE) を追加しているのは、 DxLib_Init() より前です。 試しに後に追加してみましたが、 画面は真っ黒のままでした。
Re: v3.00にすると真っ黒画面に ( No.5 )
名前:AZ99 日時:2009/09/16 11:07

同様の現象が起こったので報告します。 上記のライブラリを適用しても同じ結果でした。 プログラムも4つとも同じです。 while(ProcessMessage() == 0){} だけにしても同じような現象になるようです。 SetUseDirectDrawFlag(FALSE); を適用すると、アクセス違反のエラーが出ますね。
Re: v3.00にすると真っ黒画面に ( No.6 )
名前:Masao 日時:2009/09/16 11:55

>>Masaoさま >私の方で、 >SetUseDirectDrawFlag(FALSE) >を追加しているのは、 >DxLib_Init() >より前です。 こちらでも、初期化前に入れてビルドしたところ、 症状があった私のゲームの開発メンバーから 「画面が真っ黒になるのがなくなった。」 との報告をいただきました。 なかなか困っていたので、助かりました。 ありがとうございます。
Re: v3.00にすると真っ黒画面に ( No.7 )
名前:山崎 日時:2009/09/16 15:16

>管理人様 ご返信誠にありがとうございます。 修正されたバージョンを試してみましたが、 こちらでも変わらず画面は黒いままで何も表示されませんでした。 テスト用プログラムの4つも試させて頂きました。 結果はとんさんと同様で、どれも黒い画面が表示されただけです。 また、ウインドウに他のウインドウを重ねると、 重ねたウインドウ一部が残るというのもとんさんと同様です。 もし他にテストプログラムなどお手伝いできることがあれば DXライブラリの発展のため是非とも協力させて頂きたく思います。 ただ、なかなか忙しくて時間が取れないこともあるかとは思いますが…。 追加 私も試しに、DxLib_Init()の前に SetUseDirectDrawFlag(FALSE);を追加してみました。 すると、追加前は画面に何も表示されなかったのが、 追加後はprintfDx()とDrawBox()は表示できました。 以下は試したコードです。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE ,hInstance,HINSTANCE,hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { SetUseDirectDrawFlag(FALSE); if( DxLib_Init() == -1 ) { return -1 ; } DrawPixel( 320 , 240 , 0xffff ) ; DrawBox(20,20,50,50,GetColor(255,255,255),TRUE); printfDx("TestPrint\n"); WaitKey() ; DxLib_End() ; return 0 ; } ただ、何かキーを押してプログラムを終了しようとするとエラーになります。
Re: v3.00にすると真っ黒画面に ( No.8 )
名前:管理人 日時:2009/09/17 09:48

> とんさん、AZ99さん、Masaoさん、山崎さん お試しいただきありがとうございます。 私の予想とは原因が違ったみたいですね・・・ AZ99さんと山崎さんがご報告してくださったエラーは原因が分かり、修正しました ( 今回アップしたファイルにはその修正は含まれていませんが・・・ ) ただ、本題の画面に何も描画されない原因は未だに分かっていません とんさんがお使いのPCに搭載されているグラフィックスデバイスは GeForce7600GS とのことですが、よろしければ AZ99さん、Masaoさん、山崎さんが お使いのPCに搭載されているグラフィックスデバイスの名称も教えていただけないでしょうか? もし皆様がお使いのグラフィックスデバイスが GeForce7600GS でしたら、 私のPCにも GeForce7600GS を搭載することで同じ現象が再現できる可能性が高くなりますので・・・ あと、もし引き続きご協力してくださる方は、大変お手数で申し訳ないのですが DXライブラリのソース込みでサンプルプログラムをコンパイル、実行してみて頂けないでしょうか? こちらがそのプロジェクトを圧縮したものになります m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibSrcTest_VC.zip 中には Visual C++ 2008 Express Edition 用のソリューションファイル( 拡張子が sln のファイル ) がありますので、それを Visual C++ 2008 Express Edition で開いて、実行してみてください lib ファイルを使用する通常のライブラリの使用と異なり、ClearDrawScreen や ProcessMessage、ScreenFlip の中にもデバッガを使用して入ることができます そして、とんさんのご報告ではそもそも何も描画されていない、とのことですので、 よろしければ Sample.cpp の以下の部分 // メインループ while( ProcessMessage() == 0 ) { // 画面の初期化 ClearDrawScreen() ; // 座標の移動 x += xadd ; if( x < 0 || x >= 640 ) xadd = -xadd ; // 画像の描画 DrawGraph( x, 24, handle, TRUE ) ; // 裏画面の内容を表画面に転送 ScreenFlip() ; } の、ループが動いているのかどうかをご確認いただければと思います ループの中が一回だけ実行されて後は ProcessMessage から出てこないか、などです・・・ DrawGraph の行の辺りにブレイクポイントを張っていただければご確認いただけると思います
Re: v3.00にすると真っ黒画面に ( No.9 )
名前:山崎 日時:2009/09/17 10:26

>管理人様 おはようございます。修正お疲れ様です。 私のパソコンのグラフィックデバイスは NVIDIA GeForce 6150SE です。 サンプルプログラムの方も先ほど実行してみました。 こちらも画面には何も映らず、真っ黒なままでした。 ループ内のDrawGraph()にブレイクポイントを置きデバッグしてみたところ、 処理がループから出るようなことはありませんでした。 DrawGraph()やScreenFlip()内にも入ってみましたが、 そのときに 「ソースファイルがモジュールがビルドされたときのものと異なります」 という旨の警告が出るのですが、それはこれでよろしいのでしょうか。 一応報告しておきます。
Re: v3.00にすると真っ黒画面に ( No.10 )
名前:Masao 日時:2009/09/17 11:45

おや?偶然でしょうか。 この症状が発生しているスタッフから聞いたところ。 NVIDIA GeForce 6150 でした。 もう一人の(真っ暗現象を確認した)スタッフは、 NVIDIA GeForce 7600 GS でした。 それから、 >SetUseDirectDrawFlag(FALSE) での回避方法がありましたが、やはり処理負荷が半端なく増えてfpsが下がるので、根本的解決に期待です。
Re: v3.00にすると真っ黒画面に ( No.11 )
名前:AZ99 日時:2009/09/17 13:13

Video:GeForceFX5200 OS:Windows2000 いろいろとブレークかけて、追って見ました。 勝手な推測ですが、 SetDrawScreen()の処理に入ると、かなり重くなります。 ProcessMessage()が呼ばれたあと、 WM_PAINTなどの処理のところで重くなっているかもしれません。 最近のグラフィックデバイスだと大丈夫らしいので、関係ないかもしれませんが、 報告させていただきました。
Re: v3.00にすると真っ黒画面に ( No.12 )
名前:とん 日時:2009/09/19 04:04

すみませんしばらくの間(2週間程)まとまった時間が取れません。 今手元にBCC環境しかなく、VCの環境を整える時間がありません申し訳ない。 ------------------------------------------- ProcessMessageについて。 しているアプリ終了ボタンが動作しておりますので、 ProcessMessage内から出てこないということはありません。
Re: v3.00にすると真っ黒画面に ( No.13 )
名前:管理人 日時:2009/09/20 08:58

> 山崎さん、Masaoさん、AZ99さん、とんさん 沢山のご情報ありがとうございます&お手数おかけして申し訳ありませんでした 皆様のご情報から GeForce7600GS・GeForce6150 など、この頃のビデオチップで あればかなりの確率で現象の再現が可能だと思い至りまして、中でも一番調達しやすい GeForce7600GS を手に入れて試してみました 結果思惑通り現象は再現して、その原因は Direct3D9Device 作成時の「すべての頂点処理を GPUで処理する」という指定でした、こちらを指定すると 1.すべての頂点処理をGPUで処理できるGPU → 問題なく動作 2.一部の頂点処理のみGPUで処理することができるGPU → GPUで処理できない頂点処理APIを使用した際にエラー 3.GPUでの頂点処理を一切できないGPU → CreateDevice時にエラー この中で1、3の存在しか無いと思い込み、3の場合は頂点処理をGPUで処理しないという 指定で再度 CreateDevice をすることで解決していたのですが、存在を認識していなかった 2は CreateDevice 自体は成功するので、その後の描画処理でエラーが発生してしまっていました ( 少なくとも GeForce7600GS は2に該当しています ) この問題を CreateDevice 時の指定を「GPUで処理できる頂点処理はGPUで処理する」という 指定にすることで解決したバージョンをアップしましたので、よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: v3.00にすると真っ黒画面に ( No.14 )
名前:Masao 日時:2009/09/20 13:12

NVIDIA GeForce 6150 NVIDIA GeForce 7600 GS にて、修正を確認いたしました。 ありがとうございます。
Re: v3.00にすると真っ黒画面に ( No.15 )
名前:山崎 日時:2009/09/23 17:49

>管理人様 バージョン3.0cをダウンロードしてリビルドしたところ、 見事にきちんとゲームが動作しました。 修正、本当にお疲れ様でした。 ありがとうございました。
Re: v3.00にすると真っ黒画面に ( No.16 )
名前:とん 日時:2009/09/27 01:23

おそくなりました BCC用ライブラリをダウンロードして テストしましたところ、ちゃんと表示されました。 修正ありがとうございます。感謝です!
Re: v3.00にすると真っ黒画面に ( No.17 )
名前:管理人 日時:2009/09/29 09:51

> Masaoさん、山崎さん、とんさん ご報告ありがとうございます 皆様のお陰で大きな欠陥を修正することができました m(^ ^;m

Page: 1 |