いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

デバイス非依存ビットマップを作るには BITMAPINFO 型の変数に必要な情報を詰めて CreateDIBSection() 関数へ渡しますが、普通に作ると原点が左下になります。

DirectX や Win32API のように原点を左上にするためには BITMAPINFO 型の変数の bmiHeader.biHeight メンバにマイナスの値を設定します。

BITMAPINFO bmpInfo;

::ZeroMemory(&bmpInfo, sizeof(BITMAPINFO));
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biWidth = 640;
bmpInfo.bmiHeader.biHeight =  -480; // ←ここ
bmpInfo.bmiHeader.biPlanes = 1;
bmpInfo.bmiHeader.biBitCount = 32;
bmpInfo.bmiHeader.biCompression = BI_RGB;

ちなみに、このサイトで配布している template.cpp では、クライアント領域の高さを保持している iClientHeight が unsigned int なので普通に書くと警告が出ます。

そこで…

bmpInfo.bmiHeader.biHeight =  0 - ::iClientHeight;

…とかやっています。

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS