6

したがって、OpenGLES-2では、フラグメントシェーダーはgl_PointCoordにアクセスして、フラグメントがポイントプリミティブのどこにあるかを確認できます。

フラグメントがフレームバッファのどこにあるかを確認するためのgl_FragCoordもあります。

ただし、gl_LineCoordはどこにありますか?存在しないので、フラグメントシェーダーはラインプリミティブ上のフラグメントの位置をどのように知ることができますか?

これを知りたいのは、世界空間ではなく画面空間にダッシュを入れて破線を描きたいからです。

私が現在考えているこれを行う唯一の方法は、fragCoord.x ^ 2 + fragCoord.y ^ 2の平方根を取ることですが、gl_LineCoordしか利用できない場合は、コストがかかり、不要に聞こえます。

4

1 に答える 1

4

あなたが望むものに相当するものはありません。でも実は、これは難しいことではありません。行の一方の端に値 0 を渡し、もう一方の端に値 1 を渡すだけです。補間により、あなたが線に沿ってどれだけ離れているかがわかります。それはあなたが望むものと同等のものをあなたに与えるでしょう。

確かに、画面スペースに破線を描くのにはあまりgl_PointCoord役に立ちませんが、それも役に立ちません (この値のように [0, 1] からしか変化しないため)。

しかし、あなたは に相当する行を要求し、gl_PointCoord私はそれをあなたに与えました。

于 2012-04-30T21:54:58.403 に答える