トップページ > 記事閲覧
一定回数のループ後、描画が無効化される
名前:今岡 日時: 2015/12/29 14:42

サンプルプログラム等を実行していたところ、 while (ProcessMessage() == 0){} という形でのループを用いたものについて、起動から一定時間で画面が黒一色になり以降なにも描画されなくなることに気付きました。 ループ回数を数えてDrawFormatStringで表示し続けるだけのプログラムで確認したところ、常に700後半〜800前半あたりで描画が途切れているようでした。 そこで公式サンプルゲームにある『弾当てゲーム』を試してみましたが、同様の現象が発生し、起動からおよそ10秒程度で画面が黒で固定化されます。 しかしその後も描画以外の処理は続いているようで、キー入力を行うとショットの発射音が聞こえ、敵の弾が当たって自機が死ぬ音? も聞こえました。 どうにも私のPC環境に依存した問題のような気もするのですが……。 同様の問題が起こった、或いは対処法に心当たりのある方がいらっしゃいましたら、どうぞ宜しくお願いします。 以下が弾当てゲームのLog.txtです。 0:ChangeWindowMode実行 0:ウインドウモードフラグが立てられました 3:DXライブラリの初期化処理開始 4: システムの情報を出力します 7: DXライブラリ Ver3.16 23: 論理プロセッサの数 : 4 26: OS Windows7 ( Build 7601 Service Pack 1 ) 132: 現時点のCPU動作速度:大体2.99GHz 139: MMX命令を使用します 149: SSE命令が使用可能です 151: SSE2命令が使用可能です 154: CPUベンダ:GenuineIntel 168: CPU名: Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz 171: COMの初期化... 成功しました 177: メモリ総量:12268.97MB 空きメモリ領域:7339.45MB 179: タイマーの精度を検査します 182: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 185: パフォーマンスカウンターを使用します タイマー精度 : 2923.105000 KHz 190: ソフトの二重起動検査... 二重起動はされていませんでした 199: ウインドウクラスを登録します... 登録に成功しました 204: ウインドウモード起動用のウインドウを作成します 207: ディスプレイ情報のセットアップ開始 210: モニターの数:2 ディスプレイデバイスの数:5 213: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 216: No.1 モニター名:\\.\DISPLAY2 1360x768 32bit 60Hz 262: ディスプレイ情報のセットアップ完了 267: ウインドウの作成に成功しました 270: ウインドウを表示します 282: IMEを無効にしました 286: ウインドウスタイルをウインドウモード用に変更します... 完了 311: DirectInput関係初期化処理 314: XInput DLL の読み込み中... 成功 321: DirectInput7 の取得中... 成功 332: 引き続き初期化処理... 初期化成功 342: ジョイパッドの初期化... 349: ジョイパッドの初期化は正常に終了しました 352: マウスデバイスの初期化... 初期化成功 358: キーボードデバイスの初期化... 初期化成功 364: DirectInput 関連の初期化は正常に終了しました 371: DirectSound の初期化を行います 374: DirectSound インターフェースの取得を行います.... 成功 386: 引き続きインターフェースの初期化処理... 成功 447: DirectSound デバイスを列挙します 451: Module Name : Description : プライマリ サウンド ドライバー 454: Module Name : {0.0.0.00000000}.{702343e3-8b3e-4c58-b704-6a04fdf090fc} Description : スピーカー (BEHRINGER USB WDM AUDIO 2.8.40) 456: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 459: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 463: 利用可能サンプリング精度 473: Primary 16bit = OK 8bit = OK 476: Secondary 16bit = OK 8bit = OK 479: 利用可能チャンネル 482: Primary MONO = OK STEREO = OK 485: Secondary MONO = OK STEREO = OK 488: DirectSound の初期化は正常に終了しました 492: d3d11.dll の読み込み.... 成功 498: dxgi.dll の読み込み.... 成功 504: API CreateDXGIFactory のアドレスを取得します.... 成功 509: IDXGIFactory を作成します.... 成功 517: API D3D11CreateDevice のアドレスを取得します.... 成功 523: IDXGIAdapter を取得します.... 成功 529: Direct3D 11 FeatureLevel 11_0 以上を対象とします 532: ID3D11Device オブジェクトを取得します.... 成功 544: IDXGIDevice1 を取得します.... 成功 550: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 552: [ウインドウモード 640x480] 555: IDXGISwapChain を作成します.... 成功 561: IDXGIOutput を取得します.... 成功 571: Graphics Device:AMD Radeon HD 6450 574: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 577: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 580: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 583: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 586: カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 589: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 591: DXT2テクスチャフォーマットは使えません 594: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 597: DXT4テクスチャフォーマットは使えません 600: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 603: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 606: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 609: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 612: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 614: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 617: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 620: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 623: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 626: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 629: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 632: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 635: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 647: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 650: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 653: 使用する機能レベル:D3D_FEATURE_LEVEL_11_0 656: 同時にレンダリングできるバッファの数:8 659: 最大テクスチャサイズ 幅:16384 高さ:16384 662: 深度バッファを作成します.... 成功 668: シェーダーコード関係の初期化.... 成功 695: 各種シェーダー用定数バッファの作成.... 成功 702: 各種 ID3D11InputLayout の作成.... 成功 708: 標準描画用の頂点バッファの作成.... 成功 757: 画像の単純転送処理の初期化... 成功 765: フォントの初期化を行います 769: フォントの初期化は正常に終了しました 773: 文字コードバッファの初期化を行います... 完了しました 806:DXライブラリの初期化処理終了 36859:ウインドウを閉じようとしています 36867:ウインドウが破棄されようとしています 36871:ソフトを終了する準備が整いました 36877:フォントの初期化を行います 36881:フォントの初期化は正常に終了しました 36888:d3d11.dll の解放 1 36891:dxgi.dll の解放 1 36894:Direct3D11 のオブジェクト数を出力 36898:Direct3D11 のオブジェクト合計数 : 0 36901:DirectInput 関連の終了処理... 完了 36933:DirectSound の終了処理は正常に終了しました 36971: 36974:Alloc memory dump 36978: Total size:0(0.000kb) Alloc num:0 36981:
メンテ

Page: 1 |

Re: 一定回数のループ後、描画が無効化される ( No.1 )
名前:今岡 日時:2015/12/29 15:21

いろいろ確認していたところ、OGRE 3DのサンプルでもDIRECT3D 11を使用すると同様の現象が発生しました。 DXライブラリの問題ではなく、どうも私の環境が原因のようです。以前のバージョンを使うか、グラボ等の換装を検討したいと想います。
メンテ

Page: 1 |

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

   クッキー保存