WS_EX_LAYEREDスタイルウィンドウを使用して境界線のないウィンドウを作成しようとしています。目的はDirectXをデスクトップに直接使用してグラフィックスをレンダリングし、アルファを使用して現在のデスクトップウィンドウにブレンドすることです。スキンされたウィンドウ:Win32 APIとDirectX
私のシステムでは、このテクニックは完全に機能するようです。さまざまなアルファレベルを設定し、さまざまなレベルの透明性を達成できます。残念ながら、いくつかのユーザーが重大なパフォーマンスの問題と低フレームレートを報告しているため、この技術は使用できません。
次のようにコードの設定は次のとおりです。
- レイヤード(WS_EX_LAYERED拡張スタイル)ウィンドウを作成します。
- HWNDウィンドウを使用してDirectXを初期化します。
- CreateRenderTarget DirectXメソッドを使用してレンダーターゲットを作成します。レンダリングループ中に次に
:
- DirectXの呼び出しを使用してレンダーターゲットにグラフィックスをレンダリングします。
- GetDCメソッドを使用して、DirectXレンダーターゲットサーフェスにHDCハンドルを取得します。
- UpdateLayeredWindow関数を使用してウィンドウの内容を更新し、DirectXサーフェイスHDCを指定します。
私の質問は間違っていますか?ウィンドウの更新のパフォーマンスを向上させる方法はありますか?私はレンダリングターゲットをロックし、DIBセクションにビットを手動でコピーしてウィンドウ領域に表示するなど、さまざまなことを試みました。
デフォルトではAeroが無効になっていますが、有効にしてみましたが、パフォーマンスは変更されていません。 –