貴様ら!ブロック崩し作るので見てください
■ このスレッドは過去ログ倉庫に格納されています
0756デフォルトの名無しさん
NGNGDIB という単語が多義的に使われていて混乱してる気がするな。
ほんとに素の DIB だと SetDIBitmsToDevice(), StretchDIBits() で描画することしか出来ない。
GDI 関数を使いたければ CreateDIBSection() で DIB セクションを作成する必要がある。
ということで OK?
ついでに DDB, DIB, DirectDrawSurface の得失
DDB
+ GDI 関数が使える
+ BitBlt() が高速
- ピクセル操作は Win32 API 呼び出しが絡むので遅い
(単に API がどうこうというだけでなく、データをビデオメモリ上に持ってるんじゃない?)
DIB
- GDI 関数が使えない(ただし CreateDIBSection で補える)
- BitBlt() はやや遅い
+ ピクセル操作はポインタ経由で行えるので高速
+ ピクセルフォーマットを自分で決められる
DirectDrawSurface
+ GDI 関数が使える (ただしピクセル操作よりは遅くなる)
+ BitBlt() が高速
+ 標準で透過処理などをサポートしている
+ ピクセル操作はポインタ経由で行えるので高速
(ただしシステムメモリにサーフェイスを作った場合、ビデオメモリに作ると操作は逆に遅くなる)
- ピクセルフォーマットはデバイス依存になる
というところで。
良くも悪くもシステムが面倒を全部見てくれる DDB, ハードウェアが直接見える DirectDrawSurface,
その中間に位置する DIB という感じ。
■ このスレッドは過去ログ倉庫に格納されています