0

Gwenと呼ばれる GUI ツールキット用の OpenGL 3 レンダラーに取り組んでいます。ほとんどすべてが機能していますが、すべてを正しくブレンドするのに問題があります。使用するテクスチャによって三角形を並べ替え、VBO にパックしたので、単体テストでは、基本的に 3 つのレイヤーに要約されます。肌の質感。

Filled Rects は通常、他のすべてのものの上に描画され、ブレンドされますが、すべての背後の背景も Filled Rect であるため、当てにできません。それらを最後に描画すると Z 値の競合が発生し (例: ウィンドウのエッジの周りにテクスチャ付きの影があり、背景が深度テストに失敗したために黒くなる)、最初に描画するとブレンド/Z 値の競合が発生します (例: : 選択したハイライトの一部が、本来のようにブレンドされるのではなく、上に描画されます)。

Filled Rects 以外の特定のレイヤーを識別できるとは期待できません。さまざまなレイヤーにはさまざまな Z 値が含まれているため、特定の順序でレイヤーを描画して機能させることはできません。これを書いているときに、三角形を後ろから前に並べて描画する簡単な方法を考えましたが、それは多くの小さな描画呼び出しを意味する可能性があるため、避けたいと考えています。三角形の大きなバッチを保持できるブードゥー魔法のブレンドを含む方法はありますか?

4

1 に答える 1

3

あなたはGUIを描いています。GUI はあまり機能しないという単純な事実のために、バッチ処理を最優先事項にするべきではありません。GUI がパフォーマンスのボトルネックになることはほとんどありません。これは時期尚早の最適化のにおいがします。まず、それを機能させます。次に、遅すぎる場合は、動作を速くします。

順序に依存しない透過性を実現する単純なメカニズムはありません。あなたの最善の策は、適切な Z オーダーで物事をレンダリングすることです。

于 2011-09-10T11:44:11.673 に答える