ページ 11

画像の読み込みがうまくいかない

Posted: 2011年3月05日(土) 22:38
by dic
簡単に言うとテトリスを作ってます

そこで、テトリスのブロックを積み上げる画面で 背景を読み込み、描画しているのですが
この画像の読み込みがうまくいっていないのか、ねらったとおりに描画できません

説明しづらいので、動画でそのときをキャプチャしました

static IMAGE s_Stage01; // これにステージ画像が読み込まれる

s_Stage01 = DEF_DXDRAW->LoadBitmap( "image\\ステージ背景.bmp" );

s_Stage01を描画

しているのですが、なぜか灰色の背景しか描画されません
灰色の描画をする命令はどこにもなく、またs_Stage01の画像しか描画指定してないのです
ログファイルを見てみました
| DXDRAW3 オブジェクト初期化 開始
| DXDRAW3 ウィンドウモードの初期化 開始
+ DirectDraw の生成 - success
+ 強調レベルの設定 (DDSCL_NORMAL) - success
+ プライマリ・バッファの作成 - success
+ CreateClipper - success
+ バックバッファの作成 - success
+ クリッパーの設定 - success
+ パレットの生成 - success
+ パレットのセット - success
| DXDRAW3 ウィンドウモードの初期化 終了
| DXDRAW3 オブジェクト初期化 終了
FileName: image\タイトル(背景).bmp を ロードしました。
FileName: image\ステージ背景.bmp を ロードしました。
| DXDRAW3 オブジェクトの開放 開始
| DXDRAW3 オブジェクトの開放 終了
| サーフェイス開放チェック
DXDRAW3::LoadBitmap: 2
DXDRAW3::ReleaseSurface: 2
となり読み込み、開放ともに正常にできているようです

[youtube][/youtube]
再起動してみましたが、同じでした
何が原因か分かるかたいないでしょうか?

Re: 画像の読み込みがうまくいかない

Posted: 2011年3月05日(土) 23:20
by softya(ソフト屋)
デバッグの基本なのですが、次のことを確認されていますか?。
・s_Stage01にちゃんとした戻り値が入っていることは確認されていますのでしょうか?
・s_Stage01の描画が行われているのはデバッガで確認されていますか?
・s_Stage01の画像が壊れている可能性はありませんか?他の画像にしたらどうなりますか?

[追記]
上記のいずれでも無かったらソースコードを添付してください。

Re: 画像の読み込みがうまくいかない

Posted: 2011年3月06日(日) 16:46
by dic
>>softyaさん
上3つ全部確認したのですが、やはりダメでした

必要な部分のみのソースコードを貼ります

ただ気になることが
下のGameInit() 内で s_Stage01, s_Title01 を初期化してますが
今のところはs_Stage01だけ問題なのですが、s_Title01の方の画像も変えてみましたが、この変更した
画像ファイルを読み込んでいませんでした
問題がライブラリの内部かもしれないので、いろいろいじってみます

コード:

//====================================
static	IMAGE	s_Title01;
static	IMAGE	s_Stage01;	//	ステージの背景
static	int		s_Index;	//	汎用変数、カーソルの位置を覚えておく
static	int		s_Level;	//	現在のゲームのレベル
static	int		s_Load;		//	ロードするセーブデータの番号
//====================================
//	ゲームで使用するリソースをすべて読み込みます
void	GameInit()
{
	s_Title01 = DEF_DXDRAW->LoadBitmap( "image\\タイトル(背景).bmp" );
	s_Stage01 = DEF_DXDRAW->LoadBitmap( "image\\ステージ背景.bmp" );
	s_GameInit = true;
}
//====================================
void	Function2100()
{
	//	背景を描画
	RECT	src, dest;
	SetRect( &src, 0, 0, 800, 600 );
	SetRect( &dest, 0, 0, 800, 600 );
	DEF_DXDRAW->Blt( s_Stage01, src, dest );

	DWORD	dwInput  = DEF_DXINPUT->GetKeyState();
			dwInput |= DEF_DXINPUT->GetJoy1State();
	static	int	wait;
	if( wait == 0 )
	{
		ModeBlock();			//	状況に応じたブロックの作成
		MoveBlock( dwInput );	//	ブロックの移動、回転処理
		wait = 1;
	}
	DrawBlock();			//	ブロックの描画
	if( dwInput == 0 )
		wait = 0;
}


Re: 画像の読み込みがうまくいかない

Posted: 2011年3月06日(日) 22:14
by dic
私のおもいつくことすべて試しましたがダメでした
完全にお手上げです

ソースコード一式全部アップしておきました
http://www1.axfc.net/uploader/Sc/so/212040

ほとんどは tetorisu.cpp 内に書いてます
VC++6.0 環境なので、上位バージョンでは変換が必要かと思います

Re: 画像の読み込みがうまくいかない

Posted: 2011年3月06日(日) 22:38
by dic
一回全部中間ファイルを消して
Debugフォルダも消して
全部コンパイルしなおしたら直りました

ソースコードは消させてもらいました

中間ファイルが原因だったのでしょう
解決しました
ありがとうございました

Re: 画像の読み込みがうまくいかない

Posted: 2011年3月06日(日) 23:02
by softya(ソフト屋)
直って良かったですね。
症状を見ると依存関係のVC+の認識に問題があるみたいなので全部のソースやヘッダがソリューションに登録されているか確認されたほうが良いと思いますね。
参考まで。