トップページ > 記事閲覧
メモリテクスチャの作成に失敗しました
名前:rio 日時: 2014/01/21 23:36

開発用に新しいマシンに買い替え、 プロジェクト一式を移して作業していたのですが、 非同期読み込みの部分が正しく動かなくなっていました。 GetASyncLoadNum()の戻り値が1のまま進まなくなり、 無限ループに陥っていたのを疑問に思いLogを見たら 「メモリテクスチャの作成に失敗しました」という テキストがひたすら続いていました。 このメッセージはどういう意味なのでしょうか。 なお非同期読み込みが終了しないハンドルの特定は、 ファイルの数が膨大でコードを書くのも手間がかかるので今のところはやっていません。
メンテ

Page: 1 |

Re: メモリテクスチャの作成に失敗しました ( No.1 )
名前:管理人 日時:2014/01/24 04:10

うーん、そのエラー文はメモリが足りない場合くらいしか出そうにないです・・・ 非同期読み込みではなければ問題なく読み込みが完了するのでしょうか? ともあれ、エラー文として出力する情報を増やしてみましたので、 よろしければこちらのバージョンで実行した際に出力される 「メモリテクスチャの作成に失敗しました」の行をコピー&ペーストしていただけないでしょうか? http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.2 )
名前:rio 日時:2014/01/25 13:14

お忙しいところありがとうございます。 このマシンで試したところこうなってますね。 一応頭からLogを置いておきます。 同じ状態で、今まで質問等していた環境(win7)でも 試してみましたが、症状は確認されませんでした。 GetASyncLoadNum()>1として無理矢理ループを抜けさせて実行させると、 バックグラウンドでずっとエラー文が出力され続けているようで、 プログラムを通常の方法でプログラム内で終了させると、 プログラムに処理を持ってかれてタスクマネージャも触れなくなるような事になります。(これはOS由来の所なのかな…) 0:設定されている画面設定 1360x768 32bit color 8:システムの情報を出力します 8: DXライブラリ Ver3.11c 8: 論理プロセッサの数 : 8 8: OS Windows8 ( Build 9200 ) 109: CPU動作速度:大体3.39GHz 109: MMX命令を使用します 109: SSE命令が使用可能です 109: SSE2命令が使用可能です 110: CPUベンダ:GenuineIntel 111: CPU名:Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz 111:COMの初期化... 成功しました 113:メモリ総量:16337.10MB 空きメモリ領域:13331.29MB 113:タイマーの精度を検査します 114:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 114: パフォーマンスカウンターを使用します タイマー精度 : 3312.657000 KHz 114: ソフトの二重起動検査... 二重起動はされていませんでした 115:ウインドウクラスを登録します... 登録に成功しました 116:フルスクリーンモード用のウインドウを作成します 118:ウインドウの作成に成功しました 118:ウインドウを表示します 123:カーソルを不可視にしました 123:IMEを無効にしました 141:DirectInput関係初期化処理 141: XInput DLL の読み込み中... 成功 142: DirectInput7 の取得中... 成功 147: 引き続き初期化処理... 初期化成功 148: ジョイパッドの初期化... 151: ジョイパッドの初期化は正常に終了しました 152: マウスデバイスの初期化... 初期化成功 152: キーボードデバイスの初期化... 初期化成功 153:DirectInput 関連の初期化は正常に終了しました 153:XAudio2 の初期化を行います 154: XAudio2_8.dll を使用します 154: XAudio2 インターフェースの取得と初期化を行います.... 成功 Ver2.8 205:XAudio2 の初期化は正常に終了しました 206:DirectDraw オブジェクトの取得を行います.... 成功 208:引き続き初期化処理... 初期化に成功しました 224:IDirect3D9Ex オブジェクトを取得します.... 成功 225:Desktop Window Manager を無効にしました 225:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 740:成功 740:Driver:nvd3dum.dll Description:NVIDIA GeForce GT 640 741:画面のフォーマットは D3DFMT_X8R8G8B8 です 741:16bit Zバッファフォーマットは D3DFMT_D16 です 741:24bit Zバッファフォーマットは D3DFMT_D24X8 です 741:32bit Zバッファフォーマットは D3DFMT_D24X8 です 741:16bit カラーフォーマットは D3DFMT_R5G6B5 です 742:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 742:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 742:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 742:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 742:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 742:DXT1テクスチャフォーマットはD3DFMT_DXT1 です 743:DXT2テクスチャフォーマットはD3DFMT_DXT2 です 743:DXT3テクスチャフォーマットはD3DFMT_DXT3 です 743:DXT4テクスチャフォーマットはD3DFMT_DXT4 です 743:DXT5テクスチャフォーマットはD3DFMT_DXT5 です 744:描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です 744:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 744:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 744:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 744:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 745:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 745:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_L8 です 745:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_L16 です 745:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です 745:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です 745:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 746:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 746:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です 746:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です 746:一度に描画できるプリミティブの最大数:16777215 746:対応している最大頂点インデックス:16777215 747:同時にレンダリングできるバッファの数:4 747:最大テクスチャサイズ 幅:8192 高さ:8192 747:テクスチャステージテンポラリレジスタ:使用可 747:減算合成のハードウェア対応:ネイティブ 747:ハードウェア頂点シェーダーバージョンコード:300 747:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 748:ピクセルシェーダーバージョンコード:300 751:バックバッファロック転送の時間:48nsec 一時的な描画可能バッファを使用した転送の時間:239nsec 752:バックバッファロックを使用します 752:Zバッファを作成します.... 成功 770:プログラマブルシェーダーを使用します 824:フォントの初期化を行います 825:フォントの初期化は正常に終了しました 837:文字コードバッファの初期化を行います... 完了しました 5765:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3726 総確保メモリサイズ:258113695Byte(0KByte) 5782:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3730 総確保メモリサイズ:257923601Byte(0KByte) 5799:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3735 総確保メモリサイズ:257980762Byte(0KByte) 5816:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3739 総確保メモリサイズ:258038141Byte(0KByte) 5832:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3743 総確保メモリサイズ:258110091Byte(0KByte) 5849:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3746 総確保メモリサイズ:258109455Byte(0KByte) 5866:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3748 総確保メモリサイズ:258050811Byte(0KByte) 5882:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3752 総確保メモリサイズ:258108183Byte(0KByte) 5899:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3755 総確保メモリサイズ:258049328Byte(0KByte) 5916:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3758 総確保メモリサイズ:257931988Byte(0KByte) 5932:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3762 総確保メモリサイズ:257741637Byte(0KByte) 5949:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3768 総確保メモリサイズ:257805087Byte(0KByte) 5966:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3732 総確保メモリサイズ:257592793Byte(0KByte) 5983:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3734 総確保メモリサイズ:257592369Byte(0KByte) 5999:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3737 総確保メモリサイズ:257591733Byte(0KByte) 6016:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3742 総確保メモリサイズ:257663735Byte(0KByte) 6033:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3741 総確保メモリサイズ:257546228Byte(0KByte) 6049:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3737 総確保メモリサイズ:257253416Byte(0KByte) 6066:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3734 総確保メモリサイズ:257020626Byte(0KByte) 6083:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3728 総確保メモリサイズ:256897572Byte(0KByte) 6099:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3725 総確保メモリサイズ:256663408Byte(0KByte) 6116:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3721 総確保メモリサイズ:256428817Byte(0KByte) 6133:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3718 総確保メモリサイズ:256078218Byte(0KByte) 6149:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3714 総確保メモリサイズ:256018279Byte(0KByte) 6166:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3713 総確保メモリサイズ:256017852Byte(0KByte) 6183:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3713 総確保メモリサイズ:256017852Byte(0KByte) 6199:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3713 総確保メモリサイズ:256017852Byte(0KByte) ........(以降続く)
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.3 )
名前:rio 日時:2014/01/25 13:24

補足です。 追加していただいたエラー文からして、 確かに画像サイズ自体がそれなりの大きさを持つ エフェクトのpngを読み込み、LoadDivGraph()で切り取って使っている部分があります。 しかし、SizeX:8192 SizeY:8192 なる出力部分が ハンドルの持つ画像の大きさだとするならば、 読み込んでいる画像のサイズよりも遥かに大きいサイズになっているので、この辺りが気になります。 この読み込み部分をコメントアウトすると、 エラーは起こらないようです。
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.4 )
名前:rio 日時:2014/01/25 13:33

>>非同期読み込みではなければ問題なく読み込みが完了するのでしょうか? 当該箇所だけ、非同期読み込みの外へ出したところ、 何の問題もなく正常に動作することを確認したので 追記しておきます。
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.5 )
名前:管理人 日時:2014/01/25 19:42

ご情報ありがとうございます ログのエラーコードを見る限りではメモリ不足でメモリテクスチャの作成が失敗しているようです ( 32bitモードでは1プロセス当たり2GB前後が限界なので ) 今回エラーが発生している箇所は非同期読み込みの方がメモリ消費量が多くなるので 同期読み込みの場合はエラーが発生しないというのはなんとなくわかり、 メモリ不足に陥った際の対策はできそうなのですが、rioさんも気になっています通り そもそもメモリ不足に陥るほどメモリを消費していることがバグである可能性があります なので、大変申し訳ないのですがエラーが発生した後に出力する情報を増やしたこちらの バージョンを実行して、再度 Log.txt の内容をアップしていただけないでしょうか? http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) もしかしたら量が多すぎて掲示板に書き込めないかもしれません その場合はメールで BQE00322(あっとまーく)nifty.com ( (あっとまーく)を@に置き換えてください ) に送ってください m(_ _;m あと、読み込んでいる画像より遥かに大きいサイズとのことですが、LoadGraph や LoadDivGraph で読み込んでいる画像に 4096x4096 より大きいサイズのものはありませんでしょうか?
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.6 )
名前:rio 日時:2014/01/25 20:54

何となく勘付いていましたが、 この辺りも内部では2の冪単位で処理されてるんですね。 確かに、問題であろう画像は4096x4096 (5x6で900x768に分割)をわずかに上回ってしまっています。 しかし、windows7では全く問題が起こっていなかったのは何故なんでしょう。。 とりあえず、無限ループに陥ってからログが300個吐き出されるまでやってみたので メールで送信しておきました。よろしくお願いします。
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.7 )
名前:管理人 日時:2014/01/25 23:13

なるほど、4096x4096 を超える画像がありましたか、もし無いのに内部で 8192x8192 の サイズが算出されていたら原因が分かるかどうか怪しかったので少しほっとしました・・・ Windows7 で問題が発生しなかった詳しい原因はわかりませんが、送って頂いたログを拝見した限り 処理速度を稼ぐための同サイズ・同フォーマットのメモリテクスチャが大量に確保されていて、 これらの重複テクスチャの確保量はマルチスレッドの動作の仕方で変化するので、Windows7 と Windows8 ではマルチスレッドの動作が違い、Windows8 の動作の方がより多く確保されて メモリ消費が多くなっていたのかもしれません とりあえずメモリが足りなくなった場合は処理速度を稼ぐために確保した余分なメモリテクスチャを 解放するようにしてみましたので( あと、一度確保したメモリテクスチャを解放しないように していた仕様を変更して2秒以上経過したら解放するようにしました )、よろしければこちらの バージョンでは正常に読み込み切ることができるかお試しになってみてください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.8 )
名前:rio 日時:2014/01/26 00:49

ありがとうございます。 試したところ、ログの方は 5395:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3483 総確保メモリサイズ:259541636Byte(259541636KByte) 5396:メモリテクスチャの作成に失敗しました エラーコード:0x8007000e SizeX:8192 SizeY:8192 Format:21 総メモリ確保数:3483 総確保メモリサイズ:259541636Byte(259541636KByte) 5396:非管理テクスチャへのデータ転送用システムメモリ配置テクスチャの数:143 5396:No1. UseFlag:0 UseCount:63 CubeMap:0 SizeX:1024 SizeY:512 MipMapCount:1 Format:3 5397:No2. UseFlag:0 UseCount:6 CubeMap:0 SizeX:256 SizeY:32 MipMapCount:1 Format:3 5397:No3. UseFlag:0 UseCount:5 CubeMap:0 SizeX:256 SizeY:32 MipMapCount:1 Format:3 5397:No4. UseFlag:0 UseCount:4 CubeMap:0 SizeX:256 SizeY:32 MipMapCount:1 Format:3 5397:No5. UseFlag:0 UseCount:6 CubeMap:0 SizeX:256 SizeY:256 MipMapCount:1 Format:3 ... 5431:No188. UseFlag:0 UseCount:2 CubeMap:0 SizeX:256 SizeY:32 MipMapCount:1 Format:3 (ただし有限) というようになりました。数回試したところ、ログに出ないこともあるようです。 非同期読み込みは無事できているようです。 しかしながら、テストバージョンを当てたところ、 起動時に生成しているフォントハンドルの配列(これは非同期読み込みさせていない)が 所々壊れてしまうようになり、文章を表示させるとあちらこちらが虫食いのようになり、 どうしようもない状況が新たに発生しました。
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.9 )
名前:管理人 日時:2014/01/26 02:04

> しかしながら、テストバージョンを当てたところ、 > 起動時に生成しているフォントハンドルの配列(これは非同期読み込みさせていない)が > 所々壊れてしまうようになり、文章を表示させるとあちらこちらが虫食いのようになり、 > どうしようもない状況が新たに発生しました。 幾つかご質問させてください 1.『壊れてしまう』というのは CreateFontToHandle の戻り値が時々 -1 になってしまうという   ことではなく、正常なフォントハンドルを使用しているのに文字の描画が一部正常に行われない   ということでしょうか? 2.その現象は非同期読み込みをしなくても発生しますでしょうか? 3.作成されているフォントのサイズ、フォントのタイプ( アンチエイリアスフォント等 )、   フォントの数を教えて頂けないでしょうか?
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.10 )
名前:rio 日時:2014/01/26 02:24

1 CreateFontToHandleそのものは成功しているはずです。 最初は正常に表示できていて、そのままハンドルに入れたフォントのあちこちの文字が どんどん抜け落ちていくような、どこかでメモリ破壊が発生しているような感覚です。 (少し実行しているだけで確実にフォントハンドルが壊れ始める) 例) おはようございます→おは うござ ます→お  う ざ ま →… 非同期読み込みの時に読み込みの残数をフォントハンドルを用いて描画したところ、 妙にチカチカしていたのに気が付いたのが最初です。 2 今のところ、元々フォントハンドルは、 非同期読み込み部分の外でCreateFontToHandleを呼び出して生成しています。 3 フォントサイズは9〜90、太さ1〜5の間で様々に作っています(使っているフォント自体は4〜5種類)。 フォントタイプは主にDX_FONTTYPE_ANTIALIASING_EDGEを用い、 全部で40個のフォントハンドルを生成して使用しています。 あとは、非公開関数のSetFontSpaceToHandleを用いて いくつかフォントハンドルの字間を変更しているものがあります。
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.11 )
名前:管理人 日時:2014/01/26 03:08

ご返答ありがとうございます > 2 > 今のところ、元々フォントハンドルは、 > 非同期読み込み部分の外でCreateFontToHandleを呼び出して生成しています。 すみません言葉足らずでした、改めてご質問させてください ・画像の読み込みなどにも一切非同期読み込みを使用しない場合でも同様の現象は  発生しますでしょうか? あと、単純にメモリ不足が原因である可能性もありますので、よろしければメモリ不足が 影響しない 64bitモードでのビルド、実行を試して頂ければと思うのですが、 件の現象が発生する環境のOSは64bit版で、且つお使いの開発環境は VisualStudio でしょうか?
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.12 )
名前:管理人 日時:2014/01/26 11:15

すみません、手元の環境でも現象を確認できました メモリ不足が原因では無さそうです 原因はこれから調べます
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.13 )
名前:管理人 日時:2014/01/26 14:21

原因が分かりました、説明するには Direct3D9 の説明から始めなければならないのでしませんが、致命的なバグでした ( そして、今まで問題が発生していない or 報告されていないのが不思議なくらいの致命的なバグでした ) 修正版をアップしましたので、よろしければお試しになってみてください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.14 )
名前:rio 日時:2014/01/26 14:57

ありがとうございます。 フォントハンドルの件は確かに解決したことを確認しました。 しかし、非同期読み込みの方でまたもトラブルが発生しているようです。 無限ループから抜け出せないと思ったら、Logを見ても何も出ず、 その後何度か繰り返し試していたら強制終了が発生するケースに遭遇し、 その時に大量のメモリダンプがLog内に見られました。 メールでLogを添付しておきますのでご確認ください。
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.15 )
名前:管理人 日時:2014/01/26 15:15

今回送って頂いたログで出力されているのは一般的なメモリ不足によるもののようです No.13 で割愛させて頂いたご説明を少ししますと 今まで使用メモリを抑えるために行っていた処理に欠陥があり、ある条件から外れると No.8 でご報告して頂いたような現象が発生してしまうので、今回この 『使用メモリを抑えるために行っていた処理』を外しました なので、全体的に使用メモリが増えています そして使用メモリが増えた結果、少なくとも 32bitアプリとして一度に扱うことができる メモリ量を超えてしまったのだと思います 今回の場合はライブラリ側では対処できないので、初期化時に読み込む画像はソフト全体で 常に使用するものだけに留めておいて、それ以外の画像は必要になったときに読み込み、 必要が無くなったら逐一削除するなどの対応をしていただき、使用メモリを抑えて いただくしかありません 又は、64bitアプリにするという方法もあります その場合 32bit版の Windowsがインストールされている環境では実行できなくなりますが、 使用できるメモリは搭載メモリ量に応じて増えます
メンテ
Re: メモリテクスチャの作成に失敗しました ( No.16 )
名前:rio【解決】 日時:2014/01/26 16:38

Windows8 導入からまだ日が浅いので、 分からない事が多々あったのですが、ようやくそれら全てに納得ができました。 結局のところ、Windows7と8でのメモリ周りの仕様の差というところに落ち着くんでしょうか。 Win8マシンを導入する前から、データ読み込みで使用するメモリの肥大化は問題視していたので、 既に使用頻度の低いものは必要時だけ読み込んで終わったら破棄という処理に移行しており、Win7では高々200M程度の使用で抑えていたのですが、 Win8で実行してタスクマネージャを見ると、ケタがちょうど1ケタ上がっていたので困っていました。 返信を読む前にちょうど64bitアプリにすることも考えたのですが、 やはり仰る通りで、動作環境を狭めてしまっては意味がないと思い棄却しました。 とりあえず、このライブラリバージョンで、 Windows8環境での32bitメモリの上限を超えないようにチューニングしていく という方向で解決させたいと思います。 ありがとうございました。 また何かあった際はよろしくお願いします。
メンテ

Page: 1 |

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

   クッキー保存