トップページ > 記事閲覧
ChangeFontTypeでエラー
名前:Nameless 日時: 2016/08/10 20:02

いつもお世話になっております。 ChangeFontTypeを毎ループ使用すると実行環境依存でエラーが起きることがあります。 ----再現ソース---- #include "DxLib.h" int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE); if (DxLib_Init() == -1) { return -1; } auto color = GetColor(255, 255, 255); while (ProcessMessage() == 0) { ChangeFontType(DX_FONTTYPE_ANTIALIASING_8X8); DrawString(0,0,"12345", color); ChangeFontType(DX_FONTTYPE_NORMAL); DrawString(0, 20, "67890", color); } DxLib_End(); return 0; } ----ここまで---- ----Log.txt---- 0:ChangeWindowMode実行 0:ウインドウモードフラグが立てられました 7:DXライブラリの初期化処理開始 17: システムの情報を出力します 18: DXライブラリ Ver3.16d 18: 論理プロセッサの数 : 8 19: OS Windows8.1 ( Build 9600 ) 120: 現時点のCPU動作速度:大体3.60GHz 120: MMX命令を使用します 121: SSE命令が使用可能です 121: SSE2命令が使用可能です 122: CPUベンダ:GenuineIntel 124: CPU名:Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz 125: COMの初期化... 成功しました 130: メモリ総量:16074.20MB 空きメモリ領域:14209.67MB 131: タイマーの精度を検査します 131: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 132: パフォーマンスカウンターを使用します タイマー精度 : 3514.605000 KHz 133: ソフトの二重起動検査... 二重起動はされていませんでした 134: ウインドウクラスを登録します... 登録に成功しました 135: ウインドウモード起動用のウインドウを作成します 135: ディスプレイ情報のセットアップ開始 136: モニターの数:1 ディスプレイデバイスの数:1 137: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 64Hz 138: ディスプレイ情報のセットアップ完了 140: ウインドウの作成に成功しました 141: ウインドウを表示します 148: IMEを無効にしました 149: ウインドウスタイルをウインドウモード用に変更します... 完了 175: DirectInput関係初期化処理 175: XInput DLL の読み込み中... 失敗、XInputは使用しません 177: DirectInput7 の取得中... DirectInput8 の取得を試みます...成功 206: 引き続き初期化処理... 初期化成功 207: ジョイパッドの初期化... 259: ジョイパッドの初期化は正常に終了しました 259: マウスデバイスの初期化... 初期化成功 260: キーボードデバイスの初期化... 初期化成功 264: DirectInput 関連の初期化は正常に終了しました 277: DirectSound の初期化を行います 278: DirectSound インターフェースの取得を行います.... 成功 284: 引き続きインターフェースの初期化処理... 初期化に失敗しました 292: エラーコード 88780078 293: d3d11.dll の読み込み.... 成功 298: dxgi.dll の読み込み.... 成功 299: API CreateDXGIFactory1 のアドレスを取得します.... 成功 300: IDXGIFactory1 を作成します.... 成功 304: API D3D11CreateDevice のアドレスを取得します.... 成功 305: IDXGIAdapter を取得します.... 成功 306: Direct3D 11 FeatureLevel 11_0 以上を対象とします 307: ID3D11Device オブジェクトを取得します.... 成功 319: IDXGIDevice1 を取得します.... 成功 319: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 320: [ウインドウモード 640x480] 320: IDXGISwapChain を作成します.... 成功 322: IDXGIOutput を取得します.... 成功 323: Graphics Device:Microsoft Basic Render Driver 324: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 324: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 324: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 325: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 325: カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 326: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 326: DXT2テクスチャフォーマットは使えません 326: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 327: DXT4テクスチャフォーマットは使えません 327: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 328: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 328: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 328: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 329: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 329: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 330: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 330: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 331: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 331: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 331: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 332: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 332: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 333: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 333: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 333: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 334: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 334: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 335: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 335: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 335: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 336: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 336: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 336: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 337: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 337: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 338: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 338: 同時にレンダリングできるバッファの数:8 338: 最大テクスチャサイズ 幅:16384 高さ:16384 339: 標準描画用の頂点バッファの作成.... 成功 340: 深度バッファを作成します.... 成功 341: シェーダーコード関係の初期化.... 成功 501: 各種シェーダー用定数バッファの作成.... 成功 502: 各種 ID3D11InputLayout の作成.... 成功 572: 画像の単純転送処理の初期化... 成功 575: フォントの初期化を行います 576: フォントの初期化は正常に終了しました 577: 文字コードバッファの初期化を行います... 完了しました 579:DXライブラリの初期化処理終了 3503:テクスチャの作成に失敗しました 3504:テクスチャ文字キャッシュの作成に失敗しました ----ここまで---- 手元の環境では、一台でしか再現しなかったので殆どの環境では再現しないと思います。 時間に余裕のある時に確認していただけると幸いです。
メンテ

Page: 1 |

Re: ChangeFontTypeでエラー ( No.1 )
名前:管理人 日時:2016/08/11 22:34

手元の環境で載せていただいた再現ソースを実行してみましたが、現象は再現しませんでした テクスチャの作成に失敗する場合、一般的にはメモリ不足が原因なので ChangeFontType にメモリリークなどのバグがある場合どんな環境でも 一定時間実行し続ければ現象が再現するはずなので数分の間実行し続けてみたのですが エラーが発生したり、使用メモリが増え続けたりすることもありませんでした 断言はできませんが、グラフィックスデバイスのドライバの不具合かもしれません
メンテ
Re: ChangeFontTypeでエラー ( No.2 )
名前:Nameless 日時:2016/08/12 09:35

オフライン環境の自作PCなので、グラフィックスデバイスのドライバの不具合は十分にあり得ますね...。 ドライバを更新して確認して見たいと思います。
メンテ
Re: ChangeFontTypeでエラー ( No.3 )
名前:Nameless(解決) 日時:2016/08/24 18:46

遅れて申し訳ございません。 グラフィックスデバイスのドライバを確認して見たところ、インストールすらされていない(Windowsのデフォルト)という状況でした。 ドライバをインストールしたところ、正常に動作するようになりました。 お騒がせしました。
メンテ

Page: 1 |

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

   クッキー保存