最新のOpenGLで四角形を描画しようとしていますが、塗りつぶしとストロークを行うシェーダを使用しています。私は、塗りつぶしの色、ストロークの色とストロークの幅を(矩形の位置とサイズとともに)フラグメントシェーダの均一なブロックに送ります。ストローク・フラグメントをストローク・カラーに設定し、フィル・フラグメントをフィル・カラーに設定するための推奨される方法は何ですか?GLSLの2D Rectangleのストローク
現時点では、頭に浮かぶ2つのアイデアがあります。最初に、矩形または矩形ストロークの範囲内にぶれの座標があるかどうかをチェックし、それに基づいて傷の色を設定するif文。このメソッドは非常に複雑なif文を生成し、矩形を回転させるときにはさらに悪化する可能性があります。 (シェーダの分岐は避けるべきだと私は読んだことがあります)
私が持っているもう1つのアイデアは、色を決定するために符号付き距離関数を使用することですが、私はこれらを使用することに慣れていません。彼らはあまりにも鋭いコーナーをしません。
ここのマークはどこですか?おそらくこれを行うためのより良い方法はありますか?
塗りつぶしで塗りつぶされていないと、ストロークジオメトリの描画呼び出しと残りの塗りつぶしジオメトリの描画呼び出しがありますか?また、私は現時点ではnanovgを使用していますが、私はそれを離れて移動するために自分のライブラリを構築しようとしています。 – user1435899
はい、1つはストローク、もう1つは塗りつぶしです。 独自のライブラリを構築するのは無意味です。バグやポータブルではない解決策がたくさんあります。 MITのライセンスは非常に柔軟性、あなたは簡単に特別な目的のnanovgを改善することができます。また、DirectX、VulkanなどのグラフィックスAPIに簡単に移植できます – quazeeee