DrawPrimitive2D()でDX_NONE_GRAPHを指定すると頂点アルファが効かなくなります。
画像を指定するかSetDrawBlendMode()を指定すると頂点アルファが効くようになります。
バグか仕様か分かりませんが一応報告しておきます。
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
SetOutApplicationLogValidFlag(FALSE) ;
ChangeWindowMode( TRUE ) ;
DxLib_Init();
const int WIDTH = 640;
const int HEIGHT = 480;
const int BL = 20;
//背景
DrawBox( 0 , 0 , WIDTH, HEIGHT, GetColor(129,129,129) , TRUE) ;
for (int y=0; y<HEIGHT/BL; y++) {
for (int x=0; x<WIDTH/BL; x++) {
if ((y%2 == 0) && (x%2 == 0)
|| (y%2 != 0) && (x%2 != 0)) {
DrawBox(x * BL, y * BL, x * BL + BL, y * BL + BL,
GetColor(96,96,96) , TRUE);
}
}
}
int alpha = 100;
VERTEX2D p[4] = {
{{0, 0, 0}, 1.0f, GetColorU8(255, 0, 0, 255), 0.0f, 0.0f},
{{0, 0, 0}, 1.0f, GetColorU8(255, 0, 0, alpha), 0.0f, 0.0f},
{{0, 0, 0}, 1.0f, GetColorU8(0, 255, 0, 255), 0.0f, 0.0f},
{{0, 0, 0}, 1.0f, GetColorU8(0, 255, 0, alpha), 0.0f, 0.0f},
};
auto setpos = [&p](int x) {
p[0].pos = VGet( x, 100, 0);
p[1].pos = VGet( x+200, 100, 0);
p[2].pos = VGet( x, 300, 0);
p[3].pos = VGet( x+200, 300, 0);
} ;
setpos(10);
//これは頂点アルファが効かない
DrawPrimitive2D(p, 4, DX_PRIMTYPE_TRIANGLESTRIP, DX_NONE_GRAPH, TRUE);
setpos(220);
int SoftImage = MakeARGB8ColorSoftImage(8, 8) ;
FillSoftImage( SoftImage, 255, 255, 255, 255) ;
int m_hDummyTex = CreateGraphFromSoftImage(SoftImage) ;
//画像を指定すると頂点アルファが効く
DrawPrimitive2D(p, 4, DX_PRIMTYPE_TRIANGLESTRIP, m_hDummyTex, TRUE);
setpos(430);
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255) ;
//SetDrawBlendMode()を指定すると頂点アルファが効く
DrawPrimitive2D(p, 4, DX_PRIMTYPE_TRIANGLESTRIP, DX_NONE_GRAPH, TRUE);
WaitKey() ;
DxLib_End() ;
return 0 ;
}