一日一コード 19.簡単なエフェクト

なぜ今の時代にDirectDraw かというとバッファを直接いじれるから。
単色塗りつぶし。フェードアウトとか半透明合成とか。
まあ、一番手っ取り早いのは HSPでループ書いてポインタをDLLに渡すのが一番簡単。
でもそれだとあまり勉強にはならない気がするので、あえてWin32APIを使う。


現在、FPSのメッセージループに手間取っているところ。ウインドウズのメッセージ処理はわけわからない。

32bit 塗りつぶし。


DWORD *ptr = lpSurface;

for( int y=0; y < height; y++)
{
for(int x=0; x < width; x++)
{
*ptr = color;// DWORD color XRGB 0xff00ff みたいに使う。
// *ptr = ~ *ptr; //これで色反転。
}
ptr += lPitch - width * 4; //次の行へ。lPitchはバイト数。
}
//サーフェスのアンロックを忘れずに。