関数MakeScreenによって作成したスクリーンに画像を描画し、その後、
そのスクリーンの内容を裏画面に描画したいのですが、最後の描画だけが画面に反映されます。
以下のコードを作成しました。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
//ウィンドウ生成と、DXライブラリ初期化
ChangeWindowMode(TRUE);
SetGraphMode(800, 600, 32);
if(DxLib_Init() == -1) return -1;
//ウィンドウと同じ大きさのスクリーンを作成
int ScreenHandle = MakeScreen(800, 600, TRUE);
while(1){
//エラーが起きたらループを抜ける
if(ProcessMessage() == -1) break;
//裏画面の内容を初期化する
SetDrawScreen(DX_SCREEN_BACK);
ClearDrawScreen();
//三回繰り返す
for(int i = 0; i < 3; i++){
//作成したスクリーンを初期化し、そこを描画先にする
FillGraph(ScreenHandle, 0, 0, 0, 0);
SetDrawScreen(ScreenHandle);
//作成したスクリーンに半径100の白い円を描画する
int DrawX = 100;
int DrawY = 100 + i * 200;
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);
DrawCircle(DrawX, DrawY, 100, GetColor(255, 255, 255), TRUE);
//作成したスクリーンの内容を裏画面に描画する
SetDrawScreen(DX_SCREEN_BACK);
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);
DrawGraph(0, 0, ScreenHandle, TRUE);
}
//画面を更新
ScreenFlip();
}
//DXライブラリ使用の終了処理
DxLib_End();
return 0;
}
はじめに、ウインドウの大きさと同じサイズのスクリーンをMakeScreenによって作成します。
その後、その作成されたスクリーンの内容をFillGraphによって初期化し、白い円を描画します。
そして、そのスクリーンの内容を裏画面に描画します。
これを円の描画座標を下にずらして三回行っています。
三つの白い円が縦に並んで表示されることを期待しているのですが、これを実行しますと、三つ目の円しか描画されません。
これの理由が分かる方がいらしたら、回答お願いします。
(プログラミングにはVisualStudio2008を利用しています。また、Dxライブラリのバージョンは3.16dです)