こちらのサイトで学ばせてもらっています。「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」https://dixq.net/g/index.html
今回は「DXライブラリ入門編」の内容を実践してまとめます。
<内容>
puts int LoadGraph( char *FileName ) ;
・画像や動画ファイルのロード。
FileNameはファイルパス文字列へのポインタ(?)
ハンドルという識別番号が得られる。int型の変数に格納する。
ロード(load)。わざわざ毎回ハードディスクにアクセスしないようにメモリにのっけるからloadなのか。Now Loadingってそういうことだったのね…
int DrawGraph( int x, int y, int GrHandle, int TransFlag ) ;
・ロードしたグラフィックの描画。
第三引数に、メモリにLoadしたファイルのハンドルを入れる。
int CheckHitKey( int KeyCode ) ;
・特定キーの入力状態を得る。
引数は例えばエンターキーなら KEY_INPUT_RETURN
RETURNのところを変えるようだ。
これを利用してプログラムを終わらせるようにすると以下のようになる
while (1) {
ProcessMessage();
if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {
break;
}
}
escが押されるとbreakする。これだけだとウィンドウの×ボタン押しても処理が続くのでヤバそう。
while (1) {
ProcessMessage();
if (CheckHitKey(KEY_INPUT_ESCAPE) == 1 || ProcessMessage() != 0) {
break;
}
}
ProcessMessage() != 0
を追加するとうまくいった。
int ClearDrawScreen( void ) ;
・画面に描かれたものを消去する。
ProcessMessage();
とともにループの最初に入れて使うことで、画像を動かすことができる。
int SetDrawScreen( int DrawScreen ) ;
描画先グラフィック領域を指定する。
引数(DrawScreen)→DX_SCREEN_FRONTで表画面、DX_SCREEN_BACKで裏画面を指定できる。とりあえずは裏画面しか使わないかも。int ScreenFlip( void ) ;
で裏画面の描画を表画面に表示できるようになり、すんごいヌルヌル動く。
ScreenFlipは、1/60秒待ってから表画面に描画してくれる。つまりモニタのリフレッシュと同時に表画面に描写してくれるのでヌルヌルなるようだ。
<結論>
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更とDXライブラリの初期化と裏画面設定
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 )
{
//ここに処理を追加
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
これがテンプレとして使えるようだ。while内にはフレームごとの処理を入れる。