2011-09-10 11 views
0

私はGwenと呼ばれるGUIツールキット用のOpenGL 3レンダラに取り組んでいます。私はほとんどすべての作業をしていますが、私はいくつかの問題がすべて正しく混合するようになっています。私は、それは基本的に3層に沸くユニットテストとなるよう、彼らが使用されたテクスチャで三角形をソートし、VBOにそれらを詰めました:使用などのテクスチャ、テキスト、およびウィンドウ、ボタン、ノーで満たさRects肌の質感。深度に依存しないブレンドをどのように行う必要がありますか?

充填Rectsは、通常、他のすべての上に描画し、中に配合し、しかし、すべての背景にも充填のRectであるので、私はそれを頼りにすることはできませんされています。最後に描画するとZ値の競合が発生します(例:バックグラウンドが深度テストに失敗するため、ウィンドウの周囲に黒くなる影があります)。最初に描画するとブレンド/ z値の競合が発生します:選択ハイライトの一部が、想定されているようにブレンドされる代わりに上に描画されます。

私が充填Rects以外の任意の特定の層を識別することができることを当てにすることはできません。異なるレイヤーにはZ値が混在しているので、それらを特定の順序で描画して動作させることはできません。これを書いている間、私は、三角形を前に並べ替えた簡単な方法を考えましたが、それは避けることを望んでいる多くの小さな描画呼び出しを意味する可能性があります。いくつかのブードゥーのマジックブレンディングが、私の大きなバッチの三角形を保つことができる方法がありますか?

+3

グウェンは素晴らしいです。しかしそれは混ざり合うだろうか? –

答えて

3

あなたはGUIを描いています。バッチ処理はGUIだけではあまり効果がないという単純な事実の最優先事項ではありません。 GUIがパフォーマンスのボトルネックになることはほとんどありません。これは早すぎる最適化の匂いがする。まず、それを働かせてください。その後、遅すぎる場合は、より速く動作させる。

順序に依存しない、透明性のための簡単なメカニズムはありません。あなたの最善の策は、ちょうど正しいZ順で物事をレンダリングすることです。

+0

私はちょうどそれをあまりにも悪くしたくないので、他の人々がそれを使用して終了するかもしれないので。私は「ちょっと並べ替え」の回答を期待していたのですが、質問するのに何の費用もかかりませんでした。 – Apostate

関連する問題