こんにちは。
毎度お世話になります;
さて私は今ゲームを作っていて、メニュー部分へさしかかりました。
難なく出来あがってきたのですが、メニューの選択画面の時、選択肢を画像で表示しようとしました。
それで出来あがったのですが、普通、選択肢を選択している時は移動させてどれを選んでいるか分かりやすくします。
→これですねhttp://dixq.net/g/03_04.html
つまり何度も描くので、選択肢を書く前に背景なども描きますよね。・・・が、その選択肢の画像をロードしたのですが、
下のg_bar[0]が選択肢の一つです。これを表示させたいのに、その上の背景部分のg_spark[6]に、g_bar[0]の画像が映ってしまいます。
つまりどちらを表示させてもg_bar[0]になるのです。
ちなみにg_bar[0]をg_bar[1]に変えると正しく映り、[0]の時だけg_spark[6]に乗り移るようです。
もちろん何度もテストしていますが、どうやっても乗り移ります・・・。
↓Logです
**************************************************************************
0:システムの情報を出力します
0: DXライブラリ Ver3.06e
0: 論理プロセッサの数 : 8
0: OS Windows7 ( Build 7601 Service Pack 1 )
100: CPU動作速度:大体3.06GHz
100: MMX命令を使用します
101: SSE命令が使用可能です
102: SSE2命令が使用可能です
102: CPUベンダ:GenuineIntel
103: CPU名: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
104:COMの初期化... 成功しました
105:メモリ総量:8174.68MB 空きメモリ領域:5770.06MB
105:タイマーの精度を検査します
106:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
106: パフォーマンスカウンターを使用します タイマー精度 : 3312.890000 KHz
106: ソフトの二重起動検査... 二重起動はされていませんでした
107:ウインドウクラスを登録します... 登録に成功しました
108:ウインドウモード起動用のウインドウを作成します
110:ウインドウの作成に成功しました
132:IMEを無効にしました
133:ウインドウスタイルをウインドウモード用に変更します... 完了
134:DirectInput関係初期化処理
134: DirectInput7 の取得中... 成功
232: 引き続き初期化処理... 初期化成功
236: ジョイパッドの初期化...
244: 入力装置を見つけました
246: デバイスの登録名:JC-PS101U
247: デバイスの製品登録名:JC-PS101U
249: 周期的エフェクトの作成に失敗しました。
250: ジョイパッドの追加は正常に終了しました
251: ジョイパッドの初期化は正常に終了しました
251: マウスデバイスの初期化... 初期化成功
252: キーボードデバイスの初期化... 初期化成功
254:DirectInput 関連の初期化は正常に終了しました
281:DirectSound の初期化を行います
282:DirectSound インターフェースの取得を行います.... 成功
331:引き続きインターフェースの初期化処理... 成功
474: DirectSound デバイスを列挙します
476: モジュール名: ドライバ記述:プライマリ サウンド ドライバー
477: モジュール名:{0.0.0.00000000}.{2c7cc2ff-840a-4d53-a8ad-6649f303d3a1} ドライバ記述:スピーカー (Realtek High Definition Audio)
478: モジュール名:{0.0.0.00000000}.{6f8243c5-10ca-4c75-ad6a-279fbd4066e5} ドライバ記述:Realtek Digital Output (Realtek High Definition Audio)
479: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
480: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB
481: 利用可能サンプリング精度
482: プライマリ 16bit = OK 8bit = OK
483: セカンダリ 16bit = OK 8bit = OK
484: 利用可能チャンネル
484: プライマリ MONO = OK STEREO = OK
485: セカンダリ MONO = OK STEREO = OK
487:DirectSound の初期化は正常に終了しました
512:DirectDraw オブジェクトの取得を行います.... 成功
532:引き続き初期化処理... 初期化に成功しました
574:IDirect3D9Ex オブジェクトを取得します.... 成功
579:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
896:成功
897:Driver:nvd3dum.dll Description:NVIDIA GeForce GTX 560
897:画面のフォーマットは D3DFMT_X8R8G8B8 です
898:Zバッファのフォーマットは D3DFMT_D16 です
898:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
899:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
899:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
900:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
900:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
900:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
901:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
901:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
902:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
902:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
902:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
903:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です
903:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
903:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
904:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です
904:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です
905:最大テクスチャサイズ 幅:8192 高さ:8192
905:テクスチャステージテンポラリレジスタ:使用可
905:減算合成のハードウェア対応:ネイティブ
906:頂点シェーダーバージョンコード:300
906:ピクセルシェーダーバージョンコード:300
913:バックバッファロック転送の時間:46nsec 一時的な描画可能バッファを使用した転送の時間:307nsec
914:バックバッファロックを使用します
914:Zバッファを作成します.... 成功
920:プログラマブルシェーダーを使用します
978:フォントの初期化を行います
982:フォントの初期化は正常に終了しました
994:文字コードバッファの初期化を行います... 完了しました
9894:ウインドウを閉じようとしています
9903:ウインドウが破棄されようとしています
9905:ソフトを終了する準備が整いました
9960:フォントの初期化を行います
9961:フォントの初期化は正常に終了しました
9963:Direct3DDevice9 の解放 3
10025:Direct3D9 DLL の解放 4
10027:DirectInput 関連の終了処理... 完了
10057:DirectSound の終了処理は正常に終了しました
10073:
10074:Alloc memory dump
10074: Total size:0(0.000kb) Alloc num:0
10075:
*****************************************************************
249行目の「周期的エフェクトの作成に失敗しました。」とありますがこれが原因でしょうか?
環境
OS: Windows7
コンパイラ:VC++ 2008EE
腕は初心者です
LoadGraphの上書き?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: LoadGraphの上書き?
配列の定義が間違っている気はするのですが、はっきりさせるためにソースコード全体を掲載して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
conio
Re: LoadGraphの上書き?
------------------------------------------------------------
int g_spark[6];
int g_bar[2];
g_spark[6] = LoadGraph("****.png");//背景部分
g_bar[0] = LoadGraph("****.png");//選択肢の一部
------------------------------------------------------------
上記の様な状態になっているのではないかと思われます。
添え字としては0~5までしかないのに、
範囲外である 添え字6 にハンドルを代入し、
その後g_bar[0] (g_spark[6] ) に ハンドルを代入しているので、
g_bar[0] と g_spark[6] の画像が同一のものになっている可能性があります。
--------------------
g_spark[0] ┃メモリ上の並び
g_spark[1] ┃
g_spark[2] ┃
g_spark[3] ▼
g_spark[4]
g_spark[5]
g_bar[0] (g_spark[6] )
g_bar[1]
--------------------
(たまたまメモリ上で次に存在する g_bar[0]にハンドルを代入し、
その後、「選択肢の画像」を g_bar[0]に代入している。)
int g_spark[6];
int g_bar[2];
g_spark[6] = LoadGraph("****.png");//背景部分
g_bar[0] = LoadGraph("****.png");//選択肢の一部
------------------------------------------------------------
上記の様な状態になっているのではないかと思われます。
添え字としては0~5までしかないのに、
範囲外である 添え字6 にハンドルを代入し、
その後g_bar[0] (g_spark[6] ) に ハンドルを代入しているので、
g_bar[0] と g_spark[6] の画像が同一のものになっている可能性があります。
--------------------
g_spark[0] ┃メモリ上の並び
g_spark[1] ┃
g_spark[2] ┃
g_spark[3] ▼
g_spark[4]
g_spark[5]
g_bar[0] (g_spark[6] )
g_bar[1]
--------------------
(たまたまメモリ上で次に存在する g_bar[0]にハンドルを代入し、
その後、「選択肢の画像」を g_bar[0]に代入している。)
Re: LoadGraphの上書き?
はぁ・・ありがとうございます。
飛んだ凡ミスでした。conioさんの通りでした。
すみません;;こんなことで質問させてもらいまして・・・。
ありがとうございました。
飛んだ凡ミスでした。conioさんの通りでした。
すみません;;こんなことで質問させてもらいまして・・・。
ありがとうございました。
Dango San