0

このコードをフラグメントシェーダーで使用して、GLポイントのエッジを丸めています

precision mediump float;
varying vec4 fragColor;

void main() {

    gl_FragColor = fragColor;

    if(length(gl_PointCoord-vec2(0.5)) > 0.5)
    discard;

} 

問題は、三角ストリップを含む、コンテキストで描画されるすべてのタイプのプリミティブに丸めが適用されることです。丸めをGL_POINTSのみに制限するifステートメントを追加する方法はありますか?

4

1 に答える 1

0

他のプリミティブには新しいシェーダーを使用する必要があると思います。

2つのマイナーなコメント:

  • このような計算を行う代わりに、小さなテクスチャ(円を含む)を使用することを検討しましたか?少し速いかもしれませんが、明らかに詳細に依存します。
  • また、discardキーワードの使用は避けてください。パフォーマンスに悪影響を与える可能性があります。たとえば、現在破棄しているフラグメントのアルファ値を0に設定できます。
于 2013-01-01T17:58:25.967 に答える