トップページ > 過去ログ > 記事閲覧
LoadGraphにて画像読み込み失敗
名前:おい 日時: 2012/08/20 04:36

お世話になります。 LoadGraphの画像読み込みにて、特定の場合のみエラーが発生しており、 原因不明のためご教示ください。 SetGraphModeで画面解像度を640×480(横x縦)、カラービット数を32に設定し、 LoadGraphで816×880のPNGファイルを読み込もうとすると-1が返却されてしまいました。 Log.txtを確認したところ、「テクスチャの作成に失敗しました」とのログが残っていました。 画像サイズを色々変更して試したところ、 800×880、881×880のサイズの読み込みは成功しますが、 801〜880×880のサイズの読み込みに失敗します。 また、SetGraphModeにて画面解像度を1280×960に設定すると、 801〜880×880のサイズの画像の読み込みに成功しました。 上記現象はXP、7共に発生したので、SetGraphModeと画像サイズが関係していると思うのですが、 LoadGraphで読み込みに失敗する原因は一体なんでしょうか? ソースは以下になります。(ほぼLoadGraphのサンプルソースままです。) ------------ #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int GHandle ; SetGraphMode( 640 , 480 , 32 ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // BMP画像のメモリへの読みこみ GHandle = LoadGraph( "test1.png" ) ; // 画面左上に描画します(『DrawGraph』を使用) DrawGraph( 0 , 0 , GHandle , FALSE ) ; // キーの入力待ち(『WaitKey』を使用) WaitKey() ; DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } よろしくお願いします。

Page: 1 |

Re: LoadGraphにて画像読み込み失敗 ( No.1 )
名前:管理人 日時:2012/08/22 02:41

載せて頂いたサンプルプログラムを参考に私も手元の環境で 816x880 サイズのpngファイルを 読み込んでみましたが、正常に読み込むことができました PCに搭載されているグラフィックスデバイスの違いなどが関係しているかもしれませんので、 よろしければ実行時に作成される Log.txt の中身をこちらの掲示板にコピー&ペースト していただけないでしょうか?
Re: LoadGraphにて画像読み込み失敗 ( No.2 )
名前:おい 日時:2012/08/22 22:03

> 管理人様 ご返信ありがとうございます。 実行時のLog.txtは以下になります。 ---------- 0:システムの情報を出力します 0: DXライブラリ Ver3.07f 1: 論理プロセッサの数 : 4 1: OS WindowsXP ( Build 2600 Service Pack 3 ) 101: CPU動作速度:大体2.37GHz 101: MMX命令を使用します 101: SSE命令が使用可能です 102: SSE2命令が使用可能です 102: CPUベンダ:GenuineIntel 104: CPU名:Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz 104:COMの初期化... 成功しました 106:メモリ総量:3327.04MB 空きメモリ領域:1864.09MB 109:タイマーの精度を検査します 110:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 110: パフォーマンスカウンターを使用します タイマー精度 : 2400140.000000 KHz 111: ソフトの二重起動検査... 二重起動はされていませんでした 112:ウインドウクラスを登録します... 登録に成功しました 112:ウインドウモード起動用のウインドウを作成します 119:ウインドウの作成に成功しました 141:IMEを無効にしました 143:ウインドウスタイルをウインドウモード用に変更します... 完了 146:DirectInput関係初期化処理 146: DirectInput7 の取得中... 成功 155: 引き続き初期化処理... 初期化成功 157: ジョイパッドの初期化... 163: 入力装置を見つけました 165: デバイスの登録名:JC-U3212F 165: デバイスの製品登録名:JC-U3212F 393: ジョイパッドの追加は正常に終了しました 393: ジョイパッドの初期化は正常に終了しました 394: マウスデバイスの初期化... 初期化成功 394: キーボードデバイスの初期化... 初期化成功 396:DirectInput 関連の初期化は正常に終了しました 397:DirectSound の初期化を行います 398:DirectSound インターフェースの取得を行います.... 成功 399:引き続きインターフェースの初期化処理... 成功 448: DirectSound デバイスを列挙します 449: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 450: モジュール名: RtkHDAud.sys ドライバ記述:Realtek HD Audio output 450: 最大サンプリングレート:192.00KHz 最小サンプリングレート:8.00KHz 451: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 451: 利用可能サンプリング精度 451: プライマリ 16bit = OK 8bit = OK 451: セカンダリ 16bit = OK 8bit = OK 452: 利用可能チャンネル 452: プライマリ MONO = OK STEREO = OK 452: セカンダリ MONO = OK STEREO = OK 453:DirectSound の初期化は正常に終了しました 454:DirectDraw オブジェクトの取得を行います.... 成功 456:引き続き初期化処理... 初期化に成功しました 457:IDirect3D9Ex オブジェクトを取得します.... IDirect3D9 オブジェクトを取得します.... 成功 461:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します 778:成功 780:Driver:nv4_disp.dll Description:NVIDIA GeForce 8600 GT 780:画面のフォーマットは D3DFMT_X8R8G8B8 です 780:Zバッファのフォーマットは D3DFMT_D16 です 781:16bit カラーフォーマットは D3DFMT_R5G6B5 です 781:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 781:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 782:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 782:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 782:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 783:DXT1テクスチャフォーマットはD3DFMT_DXT1 です 783:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 783:DXT3テクスチャフォーマットはD3DFMT_DXT3 です 784:DXT4テクスチャフォーマットはD3DFMT_DXT4 です 784:DXT5テクスチャフォーマットはD3DFMT_DXT5 です 784:描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です 784:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 785:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 785:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 785:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 786:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 786:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です 786:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 787:描画用1チャンネル不動少数点16ビット型カラーフォーマットは D3DFMT_R16F です 787:描画用1チャンネル不動少数点32ビット型カラーフォーマットは D3DFMT_R32F です 787:使用できる描画用2チャンネル整数8ビット型カラーフォーマットがありませんでした 788:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 788:描画用2チャンネル不動少数点16ビット型カラーフォーマットは D3DFMT_G16R16F です 788:描画用2チャンネル不動少数点32ビット型カラーフォーマットは D3DFMT_G32R32F です 789:同時にレンダリングできるバッファの数:4 789:最大テクスチャサイズ 幅:8192 高さ:8192 789:テクスチャステージテンポラリレジスタ:使用可 790:減算合成のハードウェア対応:ネイティブ 790:ハードウェア頂点シェーダーバージョンコード:300 790:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 790:ピクセルシェーダーバージョンコード:300 950:バックバッファロック転送の時間:50907nsec 一時的な描画可能バッファを使用した転送の時間:1163nsec 950:バックバッファロックを使用しません 951:Zバッファを作成します.... 成功 964:プログラマブルシェーダーを使用します 1031:フォントの初期化を行います 1032:フォントの初期化は正常に終了しました 1036:文字コードバッファの初期化を行います... 完了しました 1053:テクスチャの作成に失敗しました 2190:フォントの初期化を行います 2190:フォントの初期化は正常に終了しました 2191:Direct3DDevice9 の解放 3 2195:Direct3D9 DLL の解放 4 2197:DirectInput 関連の終了処理... 完了 4240:DirectSound の終了処理は正常に終了しました 4244:ウインドウを閉じようとしています 4249:ウインドウが破棄されようとしています 4249:ソフトを終了する準備が整いました 4315: 4315:Alloc memory dump 4316: Total size:0(0.000kb) Alloc num:0 4316: ---------- よろしくお願いします。
Re: LoadGraphにて画像読み込み失敗 ( No.3 )
名前:管理人 日時:2012/08/23 00:40

Log.txt の中身を貼り付けていただきありがとうございます ログを拝見する限りでは少しだけ古いバージョンのDXライブラリをお使いのようです 古いと言っても4ヶ月程なので、この間に直っている可能性は低いかもしれませんが よろしければこちらの最新バージョンをお試しになってみてください 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/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) あと、私の手元で載せていただいたサンプルプログラムのファイル名だけ変更して コンパイルしたこちらで正常に動作することを確認している実行ファイルをアップしましたので、 よろしければおいさんの環境でも正常に動作するかお試しになってみてください m(_ _)m https://dxlib.xsrv.jp/file/816x880pngTest.zip
Re: LoadGraphにて画像読み込み失敗 ( No.4 )
名前:おい(解決) 日時:2012/08/23 02:46

> 管理人様 ご返信ありがとうございます。 早速最新バージョンの確認と、管理人様コンパイルのexeを実行したところ、 両方共正常に816x880サイズの画像を読み込むことができました。 ご指摘の通り、バージョンが古いことが原因のようでした。 お手数おかけし申しありません。 また、調査等ありがとうございました。

Page: 1 |