Gwenと呼ばれる GUI ツールキット用の OpenGL 3 レンダラーに取り組んでいます。ほとんどすべてが機能していますが、すべてを正しくブレンドするのに問題があります。使用するテクスチャによって三角形を並べ替え、VBO にパックしたので、単体テストでは、基本的に 3 つのレイヤーに要約されます。肌の質感。
Filled Rects は通常、他のすべてのものの上に描画され、ブレンドされますが、すべての背後の背景も Filled Rect であるため、当てにできません。それらを最後に描画すると Z 値の競合が発生し (例: ウィンドウのエッジの周りにテクスチャ付きの影があり、背景が深度テストに失敗したために黒くなる)、最初に描画するとブレンド/Z 値の競合が発生します (例: : 選択したハイライトの一部が、本来のようにブレンドされるのではなく、上に描画されます)。
Filled Rects 以外の特定のレイヤーを識別できるとは期待できません。さまざまなレイヤーにはさまざまな Z 値が含まれているため、特定の順序でレイヤーを描画して機能させることはできません。これを書いているときに、三角形を後ろから前に並べて描画する簡単な方法を考えましたが、それは多くの小さな描画呼び出しを意味する可能性があるため、避けたいと考えています。三角形の大きなバッチを保持できるブードゥー魔法のブレンドを含む方法はありますか?