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メモリの上限を超えないようにチューニングしていく
という方向で解決させたいと思います。
ありがとうございました。
また何かあった際はよろしくお願いします。
|