今、ScreenFlipを使わず裏画面を加工して表画面に自前の処理で描画しているのですが、以下の二つの問題に悩まされています。
・処理が重い
・裏画面が描画されている?
アニメーションさせなければ問題は発生しません。
問題の原因は何でしょうか?
DXライブラリが古いバージョンを使っていたので最新版に更新してみましたが、同じ問題が発生します。
以下再現ソースを掲載します。
#include "Dxlib.h"
int width, height;
int DxLib_Init2() {
if (DxLib_Init() == -1) DxLib_End();
int Cb;
GetScreenState(&width, &height, &Cb);
return 0;
}
void ScreenFlip2() {
SetDrawScreen(DX_SCREEN_BACK);
int handle = MakeGraph(width, height);
GetDrawScreenGraph(0, 0, width, height, handle);
SetDrawScreen(DX_SCREEN_FRONT);
ClsDrawScreen();
DrawExtendGraph(0, 0, width*0.5, height, handle, TRUE);
DrawExtendGraph(width*0.5, 0, width, height, handle, TRUE);
}
int WINAPI WinMain(HINSTANCE h1,HINSTANCE hp,LPSTR lpC,int nC) {
ChangeWindowMode(true);
//if (DxLib_Init() == -1) return -1;
if (DxLib_Init2() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
for (int i = 0; i < 480; i++) {
ClsDrawScreen();
DrawBox(i, i, i+10, i+10, GetColor(255, 255, 255), TRUE);
ScreenFlip2();
WaitTimer(125);
}
WaitKey();
DxLib_End();
return 0;
}
ちなみに、初期化関数が別関数に分離しているのは今後作る他関数でも画面サイズを使う予定があるからです
現在ヘッダーに上記二つの関数は分離していますが、上記を実行しても問題が同じく発生することは確認済みです。