cocos2d-x 2.0.4 で作業しています。この 2 つの画像を通して、私が何をしようとしているのかを説明します。
私がやりたいことは、ぼやけた境界線またはグラデーションのある境界線をプログラムで作成することです。それを行うには2つのアイデアがありますが、それが正しい方法かどうかはわかりません。最初の解決策は、ぼやけた色のみを含む多角形 (この場合は穴のある凹型多角形) を三角測量し、その上にグラデーションで色をレンダリングすることです。多角形の外側の頂点はフル アルファになり、内側の頂点はゼロになります。 -アルファ。その場合、補間は勾配の仕事をします。2 番目の解決策は、シェーダー自体の内部で実行することです。必要なのは、ピクセルとそれに最も近いポリゴンのエッジからの距離を計算することだけです。次に、特定のしきい値の下で、その距離に応じて特定のアルファ値でピクセルの白色に影響を与えます (距離が最短であるほど、アルファは最大になります)。
とにかく、私はopenGLのものに非常に慣れていないため、ポリゴンのすべてのピクセルの距離を計算する必要があるため、2番目のソリューションでは処理時間が長くなってしまうのではないかと心配しています. この人たちについてどう思いますか?私の推測を確認する傾向があるアイデアはありますか、それとも私はこれについて完全に間違っていますか?
編集:私が最終的に選択した解決策は、ポリゴン内のすべての角度の二等分線 (3 つの連続した頂点で計算しやすい) を使用し、その二等分線上のポイントを取得して、内側のポリゴンの頂点にすることでした。次に、外側のポリゴンの頂点または内側のポリゴンの頂点を取得して、GL_TRIANGLE_STRIP パラメーターに適合する頂点の配列を作成します。分かりやすいように下に画像を貼っておきます。