MakeScreen という関数を使用すると『仮画面』を作成することができます
int Screen = MakeScreen( 640, 480, TRUE ) ; // MakeScreen で作成
while( ProcessMessage() == 0 )
{
SetDrawScreen( Screen ) ; // ←描画先にできます
ClearDrawScreen() ; // Screen の内容をクリア
DrawBox( 100, 100, 200, 200, GetColor( 255,255,255 ), TRUE ) ; // Screen に四角形を描画
SetDrawScreen( DX_SCREEN_BACK ) ;
DrawGraph( 10, 10, Screen, TRUE ) ; // LoadGraph で作成したグラフィックハンドルと同じように描画することができます
ScreenFlip() ;
}
DeleteGraph( Screen ) ; // 不要になったら削除
尚、仮画面を直接表画面に表示することはできませんので、最終的には SetDrawScreen( DX_SCREEN_BACK ) ;
で描画先を裏画面にして、仮画面を裏画面に描画してから ScreenFlip(); で表画面に反映する、という形になります
ただ、背景の広さによりますが、何画面分もの広さがある場合、それを全部画像として
持つと相当大きな容量になる可能性がありますので、個人的にはマップチップを毎回描画した
ほうが良いのではないかと思います
( 32x32 のチップを 640x480 の画面に毎回 20x15個描画するというのはDXライブラリ公開当時の
2001年のPC( CPU は Celeron 300MHz ( 0.3GHz ) )でも余裕でしたし… )
因みに、マップチップは1枚の画像にして、LoadDivGraph で読み込んで描画すると高速に
描画することができます( チップ1枚1枚をそれぞれ別の画像にして個別に LoadGraph で
読み込んでから描画する場合に比べて10倍近い速度差があります )