#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int i ;
// DXライブラリ初期化処理
if( DxLib_Init() == -1 ) return -1 ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// 一番左上に絵を表示、20分の1秒待つ、を13回繰り返す
for( i = 0 ; i < 13 ; i ++ )
{
// 画面に描かれているものを一回全部消す
ClearDrawScreen() ;
// 絵を表示
LoadGraphScreen( i * 10 , 100 , "test1.bmp" , FALSE ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
// 20分の1秒待つ
WaitTimer( 50 ) ;
}
// キーの入力待ち
WaitKey() ;
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
<実行例>
実行例の画面グラフィックは何も変わりませんが、実行してみればちらちらしなくなったことを確認できると
思います。
さて今回の主役であるダブルバッファリングを扱うための関数は2つあります。一つは SetDrawScreen 関数
もう一つは ScreenFlip 関数です。
SetDrawScreen 関数は描画先の画面を指定するための関数です。画面の種類は表画面と裏画面の2種類があり、
それぞれ #define 定義された DX_SCREEN_FRONT と DX_SCREEN_BACK で指定します。上記のサンプルでは
DX_SCREEN_BACK 、つまりこれから裏画面に描画する事を指定しています。
表画面は先程の『プレイヤーに普段見えている画面』のことを示し、裏画面は『プレイヤーには見えない画面』
のことを示します。基本的にこの2つの画面はプレイヤーに見えているかいないかの違いを除いて扱う上で違いは
何一つありませんので使わない手はありません。
そして裏画面への描画が無事終った暁には ScreenFlip 関数の出番です。
これは裏画面に描かれているグラフィックを丸ごと表画面にコピーする関数で、この関数を使えば晴れて完成
された絵がプレイヤーの目に入ります。
早いですがこれで今回の目的は達成できました。
ちかちかしないで絵を動かす事も出来るようになりましたので、次はキーボードやゲームパッドを使って絵を動かしてみましょう。
戻る