PFN_DrvTransparentBlt
コールバックシグネチャ
BOOL PFN_DrvTransparentBlt(
SURFOBJ* param0,
SURFOBJ* param1,
CLIPOBJ* param2,
XLATEOBJ* param3,
RECTL* param4,
RECTL* param5,
DWORD param6,
DWORD param7
);パラメーター
| フィールド | 型 |
|---|---|
| param0 | SURFOBJ* |
| param1 | SURFOBJ* |
| param2 | CLIPOBJ* |
| param3 | XLATEOBJ* |
| param4 | RECTL* |
| param5 | RECTL* |
| param6 | DWORD |
| param7 | DWORD |
公式ドキュメント
DrvTransparentBlt 関数は、透過を伴うビットブロック転送機能を提供します。
戻り値
DrvTransparentBlt は、成功した場合に TRUE を返します。それ以外の場合は FALSE を返します。
解説(Remarks)
グラフィックスドライバーでは、DrvTransparentBlt 関数を任意で実装できます。
透過を伴うビットブロック転送は、2 つのデバイス管理サーフェイスの間、またはデバイス管理サーフェイスと GDI 管理の標準形式ビットマップとの間でサポートされます。ドライバーの作成者は、ビデオメモリ内のオフスクリーンデバイスビットマップからビデオメモリ内の他のサーフェイスへの blt をサポートすることが推奨されます。それ以外のケースはすべて、性能上の不利をほとんど伴わずに EngTransparentBlt に委ねることができます。ドライバーは、デバイス管理サーフェイスが関係する呼び出しを EngTransparentBlt に委ねることができます。
ソースサーフェイス上のピクセルのうち、iTransColor で指定された透過色に一致するものはコピーされません。透過 blt の詳細な説明については、Copying Bitmaps を参照してください。
同一サーフェイス上で転送元と転送先の矩形が重なった状態でドライバーが呼び出されることはありません。
ドライバーは、カラーキーの比較において未使用のビットを無視する必要があります。たとえば、ビットマップ形式が 5:5:5(赤、緑、青がそれぞれ 5 ビット)の場合の最上位ビットなどです。
ドライバーは、EngAssociateSurface を呼び出すときに HOOK_TRANSPARENTBLT フラグを設定することで DrvTransparentBlt をフックします。ドライバーが DrvTransparentBlt をフックしており、サポートしていない操作の実行を求められた場合は、EngTransparentBlt の呼び出しにデータを渡して GDI に処理させる必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)