ページ 1 / 1
データのロードとアニメーションの表示について
Posted: 2011年10月19日(水) 23:23
by みーしぇ
DXライブラリでいろいろ操作しているうちに気になったことがあったため、投稿させて頂きました。
ゲームをある程度作って楽しんでいたのですが、画像を読み込んでいる間、ずっと画面が何も表示されないままというのが気になり、
読み込み中は先に読み込んだ画像を、読み込みが終わるまで回転させるようなプログラムを作ろうとしたのですが、うまくいきません。
いろいろ作ってはいるのですが、回転が途中で止まったり、急に早くなったりを繰り替えしています。
理想は、画面上では常に一定の速度で画像が回転し、その間、ゲームに必要な画像や音楽を読み込んでいる、という状態です。
Re: データのロードとアニメーションの表示について
Posted: 2011年10月19日(水) 23:42
by softya(ソフト屋)
過去ログで何度か話題になってますね。
「DxLibでロード画面を作るには? • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=3846
スレッドを使わなくても、カクカクはある程度に抑えるとが出来ます。
Re: データのロードとアニメーションの表示について
Posted: 2011年10月20日(木) 00:11
by みーしぇ
素早いお返事、ありがとうございます。
過去ログのは見てみたのですが、自分には一枚の画像を配列に入れてるように見えました。
実装したいものでは複数の画像に対応させたいので、どう応用していいのかわかりませんでした。
簡単な書き方で申し訳ないのですが、下記の様に、ENDキーが押されるまでアニメーションを実行し、
アニメーションを実行しつつ、graph_loadingを行わせることは可能でしょうか?
コード:
int load_end = 0;
void graph_loading(){
if( load_end == 0){
画像1を読み込む
画像2を読み込む
...
最後の画像を読み込む
load_end = 1;
}
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(true);
SetAlwaysRunFlag(true);
if(DxLib_Init() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
while(!CheckHitKey(KEY_INPUT_ESCAPE)){
ClearDrawScreen();
/* ここにアニメーション処理を記述 */
ScreenFlip();
if(ProcessMessage() != 0) break;
}
DxLib_End();
return 0;
}
Re: データのロードとアニメーションの表示について
Posted: 2011年10月20日(木) 00:25
by softya(ソフト屋)
やはり、読み込みリストを作って何個か読んだら表示に戻るようにしないとカクカクしますので、1つ読む度にtimeGetTimeなどで経過時間を計測してトータルで13ms~15ms辺りで描画処理に戻るように設計すべきでしょうね。
どう読み込みリスト(たぶん構造体配列)を作るかは工夫すべきところでしょう。
Re: データのロードとアニメーションの表示について
Posted: 2011年10月20日(木) 00:35
by みーしぇ
softya(ソフト屋) さんが書きました:やはり、読み込みリストを作って何個か読んだら表示に戻るようにしないとカクカクしますので、1つ読む度にtimeGetTimeなどで経過時間を計測してトータルで13ms~15ms辺りで描画処理に戻るように設計すべきでしょうね。
どう読み込みリスト(たぶん構造体配列)を作るかは工夫すべきところでしょう。
やはり、マルチスレッドは難しいですね・・・。
これからも、色々調べていくことにします。
最後に、早々とした返信、ありがとうございました。
Re: データのロードとアニメーションの表示について
Posted: 2011年10月20日(木) 00:37
by softya(ソフト屋)
DXLIBはライブラリの制約でマルチスレッドで読め込めませんので、私のは関数呼び出しでの読み込み方法です。
注意してください。