2

純粋な webgl を使用して破線を作成しようとしています。これについてはすでに質問があり、おそらく私はばかげていることは知っていますが、それを機能させる方法がわかりません。概念は理解できますが、シェーダーでパスに沿った距離を取得する方法がわかりません。以前の回答には次の行がありました。

varying float LengthSoFar; // <-- passed in from the vertex shader

では、どうすれば取得できLengthSoFarますか?頂点シェーダーでどのように計算できますか?

私は何かを完全に見逃していますか?誰かが私に実際の例を教えてもらえますか? または、少なくともいくつかの良い手がかりはありますか?私はこれで何日も頭を壁にぶつけてきました。

4

2 に答える 2

1

「LengthSoFar」を頂点属性としてシェーダーに渡します。JavaScriptコード(シェーダー部分ではなくjs部分)でシェーダープログラムを作成すると、次のようなものを作成できます

program.lengthSoFar = gl.getAttribLocation(program, 'aLengthSoFar');

頂点シェーダーの属性の aLengthSoFar

webgl でこのチュートリアルをお勧めします。基本がすべて含まれています: http://www.youtube.com/watch?v=me3BviH3nZc

webgl でのグラフィックス プログラミングの問題はすぐにわかります。シェーダーのプログラミング自体は難しくありませんが、js と webgl ですべての詳細を設定するのは非常に面倒です。

ヒント: グラフィックス プログラミングは一方通行であることを常に覚えておいてください。モデル、つまり JavaScript コードがあります。このモデルは頂点シェーダーに情報を送信し、頂点シェーダーは画面にピクセルを表示するフラグメント シェーダーに情報を送信します。残念ながら、カットするコーナーはありません。

これが、彼らが属性や変数などを思いついた理由です。javascript から頂点シェーダーの属性 (関数のパラメーターなど) を設定できます。ただし、属性は読み取り専用です。したがって、それらをコピーして、変数としてフラグメントシェーダーに渡す必要があります。

于 2013-10-13T04:26:10.647 に答える