3

Windows で OpenGL レンダリングと GDI を混在させる方法を考え出そうとしています。以前は、OpenGL コンテンツをフレームバッファ オブジェクトにレンダリングし、それを抽出してから Windows GDI グラフィックス コンテキストにブリットし、GDI のものをその上に描画していました。これは本当にフレームレートを壊しています。

現在行っていることとは逆のことをしたいので、OpenGL レンダリングはウィンドウに直接行われ、GDI のものをテクスチャにアップロードされたビットマップにレンダリングし、クワッドを使用してオーバーレイします。GDI はそれほど変更されないので、フレームごとに再描画する必要はありません。テクスチャをキャッシュするだけで済みます。

問題は、GDIビットマップから正しいアルファ値を取得できないように見えるため、テキストと線がひどくジャギーになることです。

これを行う方法に関する有用なリソースはありますか? 必要な方法で GDI または GDI+ をアルファ チャネルに書き込むことは可能ですか?

4

3 に答える 3

2

GDI ではなく生の OpenGL を使用してレンダリングした方が簡単だと思います。いくつかのラッパー関数を作成し、GDI の代わりに呼び出すだけです。

于 2009-01-11T00:25:04.000 に答える
2

本当に必要ですか?GDI 関数を使用して、OpenGL と同じデバイス コンテキストで描画できるはずです。

于 2009-01-11T00:45:46.063 に答える
0

ステンシルを使ってみてはいかがでしょうか。ステンシル バッファーでテクスチャを複製します。GL_NOTEQUAL をテスト関数として使用し、参照値をテクスチャの背景値と同じにします。最初に OpenGL のものをレンダリングし、次にステンシルを有効にしてから、テクスチャ付きの四角形をレンダリングします。

これが 2D の問題なのか 3D の問題なのかは指定しません。ギザギザは、すべてがほぼ同じ平面上にある 3D ワールドでは深度の問題である可能性があります。3D で作業している場合は、テクスチャ付きの四角形が他のすべての前にあることを確認するか、Z バッファーを変更します。

于 2009-01-13T23:35:03.897 に答える