いつもお世話になっております。
SetDrawBrightについて、良くわからない現象が起きていて困っています。
サンプルプログラムを後述します。
このサンプルプログラムは、SetDrawBrightを使って
輝度を「灰色、白、緑、青、赤、黄色、ピンク」と
順番に変えながら、画面左端に白いBoxを描いていき、
次にその右側に逆回しで輝度を変化させつつ
同様に白いBoxを描いていくようになっています。
予測としては
┌───┐ ┌───┐
│灰色 │ │灰色 │
├───┤ ├───┤
│白 │ │白 │
├───┤ ├───┤
│緑 │ │緑 │
├───┤ ├───┤
│青 │ │青 │
├───┤ ├───┤
│赤 │ │赤 │
├───┤ ├───┤
│黄色 │ │黄色 │
├───┤ ├───┤
│ピンク│ │ピンク│
└───┘ └───┘
となるはずなのですが、
┌───┐ ┌───┐
│灰色 │ │灰色 │
├───┤ ├───┤
│白 │ │白 │
├───┤ ├───┤
│緑 │ │青←?│
├───┤ ├───┤
│緑←?│ │青 │
├───┤ ├───┤
│赤 │ │赤 │
├───┤ ├───┤
│黄色 │ │黄色 │
├───┤ ├───┤
│ピンク│ │ピンク│
└───┘ └───┘
となってしまいます。
結果を見る限りだと、青←→緑への輝度変更が
うまくいかないようですが、
エラーが返って来てるわけでもないようです。
よろしくお願いします。
//=====ここからサンプル=====================
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int err_flg ;
int work_RGB[7][3] = { 128,128,128, //グレー
255,255,255, //白
0,255, 0, //緑
0, 0,255, //青
255, 0, 0, //赤
255,255, 0, //黄
255,128,128 } ; //ピンク
// 画面モードのセット
SetGraphMode( 640 , 480 , 16 ) ;
if(DxLib_Init()==-1)return -1;
SetDrawScreen(DX_SCREEN_FRONT);
//---------------------------------------------------
ClearDrawScreen() ;
for ( int y = 0 ; y < 7 ; y++ ) {
err_flg = SetDrawBright( work_RGB[y][0],work_RGB[y][1],work_RGB[y][2] ) ;
DrawBox( 0 , y * 30 , 100 , y * 30 + 29 , GetColor(255,255,255) , TRUE ) ;
DrawFormatString( 101, y * 30,GetColor(255,255,255) ,"%d", err_flg);
}
for ( int y = 6 ; y >= 0 ; y-- ) {
err_flg = SetDrawBright( work_RGB[y][0],work_RGB[y][1],work_RGB[y][2] ) ;
DrawBox( 200 , y * 30 , 300 , y * 30 + 29 , GetColor(255,255,255) , TRUE ) ;
DrawFormatString( 301, y * 30,GetColor(255,255,255) ,"%d", err_flg);
}
WaitKey() ;
//---------------------------------------------------
DxLib_End();
return 0;
}