DrawBoxAAについて、
現在迷路のプログラムを作成しているのですが、、
DrawBoxAAでマスの描画にて、
境界線が見えてしまい、
境界線を見れなくするようにしたいです。
現状、背景(道含む)をGetColor(255, 255, 255)、壁をGetColor(0, 0, 150)で描画しています。
実際に描画したときの画像となります。
ttps://kokosan60.com/maze.png
過去ログにて、
ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4218
加算ブレンドにするといい
との書き込みがありましたので、試してみましたが、
背景が白のためか、すべて白で描画されてしまいました。
解決策ありますでしょうか。
※全部記載となると量が多くなってしまうので、描画部分のみのコードを記載します。
必要とあればプロジェクトごとアップいたします。
const int bk = GetColor(0, 0, 0);
const int wh = GetColor(255, 255, 255);
const int red = GetColor(255, 0, 0);
const int org = GetColor(255, 165, 0);
const int yel = GetColor(255, 255, 0);
const int blue = GetColor(0, 0, 150);
void disp_maze(const vector<vector<int>> masu) {
int DesktopW, DesktopH;
GetDefaultState(&DesktopW, &DesktopH, NULL); //描画先のディスプレイのサイズ取得
DesktopW = (int)(DesktopW * (SCALE - 0.1));
DesktopH = (int)(DesktopH * (SCALE - 0.1));
int max_string_wide = 0; //メニュー文字幅最大値
for (int i = 0; i < MAX_SUB_MENU_CNT; i++) {
if (max_string_wide < GetDrawStringWidth(menu_name[i], -1)) {
max_string_wide = GetDrawStringWidth(menu_name[i], -1);
}
}
DesktopW -= max_string_wide;
float masu_size = 0;
const int tate = (int)masu.size();
const int yoko = (int)masu[0].size();
if (DesktopW / yoko > DesktopH / tate) {
masu_size = (float)DesktopH / (tate);
}
else {
masu_size = (float)DesktopW / (yoko);
}
for (int i = 0; i < tate; i++) {
for (int j = 0; j < yoko; j++) {
int cr;
switch (masu[i][j]) {
case wall:
cr = blue;
break;
case road:
cr = wh;
break;
case ansroad:
cr = yel;
break;
}
// 加算ブレンドに変更
//SetDrawBlendMode(DX_BLENDMODE_ADD, 1);
DrawBoxAA(masu_size * j, masu_size * i, masu_size * (j + 1), masu_size * (i + 1), cr, true);
// 元に戻す
//SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255);
}
}
ScreenFlip();
}