[1] 質問文
[1.1] 自分が今行いたい事は何か
DirectXの「D3DXCreateTextureFromFileEx」関数を用いて画像を表示しようと思っているのですが
エラーがでます。
いちよう画像単体の表示、DirectInputを用いた画像の移動まではできたので、
使いやすいように関数にまとめてみようと挑戦しているところです。
目標はDXライブラリの「LoadGraph関数」を目指しています。
引数に「ファイルパス」、戻り値に「グラフィックハンドル」を
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
ウィンドウの表示やDirect3D初期化処理などは省略しました。
必要な場合は載せます。
単体画像の表示まではエラーなくいったので変更箇所だけ載せました
//グローバル変数
LPD3DXSPRITE pSprite;
LPDIRECT3DTEXTURE9 *pTexture;
int iTexttureNum=0;
const char *pFileName=NULL;
//画像読み込み関数
int InitSprite(const char *pFileName){
// 「スプライトオブジェクト」の作成
if(FAILED(D3DXCreateSprite(pDevice,&pSprite)))
{
EndGameSystem(); //エラー処理関数
}
pTexture = new LPDIRECT3DTEXTURE9[iTexttureNum];
//「テクスチャオブジェクト」の作成
if(FAILED(D3DXCreateTextureFromFileEx(
pDevice,
pFileName, //ファイル名
D3DX_DEFAULT, //幅 (ピクセル単位)
D3DX_DEFAULT , //高さ (ピクセル単位)
D3DX_DEFAULT,
0,
D3DFMT_UNKNOWN,
D3DPOOL_DEFAULT,
D3DX_FILTER_NONE,
D3DX_DEFAULT,
0xff000000,
NULL,
NULL,
&pTexture[iTexttureNum] //テクスチャ名
)
)
)
{
EndGameSystem(); //エラー処理関数
}
iTexttureNum++;
return iTexttureNum;
}
//解放処理
void EndSprite(){
for(int i=0;i<=iTexttureNum;i++){
SAFE_RELEASE(pTexture[i]);
}
iTexttureNum=0;
SAFE_DELETE(pTexture);
SAFE_RELEASE(pSprite);
}
「Test_DirectX_Game.exe の 0x00073432 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xabababab を読み込み中にアクセス違反が発生しました。」というエラーです。
いちよう画像は表示されて、画像を移動されることもできるのですが、デバック終了すると上記のようなエラーが出てしまいます。
エラー場所が出ているのですが、どこかわかりません。
[1.4] 今何がわからないのか、知りたいのか
エラーの解決方法、アドバイスをお願いいたします。
[2] 環境
[2.1] OS : Windows8 64bit
[2.2] コンパイラ名 : VC++ 2010 express
[3] その他
・どの程度C言語を理解しているか
c言語は学校で一通りやりましたが、ポインタが理解できていません。その他ちらほら理解できていないところあり
クラスは入門書でやりましたが、実用LVまでにはいきません。
躓いたら検索や本を読み直すという感じです。