2012-04-05 7 views
3

OpenGLアプリケーションにジオメトリシェーダを導入しました。私のシェーダには、頂点シェーダからフラグメントシェーダに渡すかなりの変数があります。今度は、ジオメトリシェーダを導入して、各頂点のジオメトリシェーダでさまざまな値を手動で渡す必要があります。それを避け、「自動的に」行う方法はありますか?すぐにあなたのパイプラインのジオメトリシェーダを紹介してジオメトリシェーダでさまざまな変数を渡す

答えて

2

あなたはフラグメントシェーダに頂点シェーダからの変数を渡したい場合は、頂点からの入力変数を作成し、それらを手動で渡す必要がありますシェーダと出力変数をフラグメントシェーダに渡します。どのGLSLバージョンを使用しているのかわかりませんが、GLSL 3.30 specのセクション4.3.4を確認してください。

2

Noopジオメトリシェーダを除いて何も実行できないため、ジオメトリシェーダがジオメトリに対して何もしていない場合、なぜ最初に有効にされているのですか?

一般に、ジオメトリシェーダは、入力として複数の頂点を取り、出力として(異なる)数の頂点を生成します。どの入力頂点がどの出力頂点に自動的にマッピングされるべきか?

+0

ええ、そうです。私の場合、ジオメトリシェーダは実際に頂点を破棄する以外にジオメトリに対して何もしないので、そこには意味があります。しかし、ジオメトリシェーダの適用がはるかに広いことを理解しています。したがって、私が望むのは実現不可能です。説明をありがとう。 – SimpleMan

+0

ジオメトリを変更しない非常に便利なジオメトリシェーダがあります。ジオメトリシェーダは、プリミティブのすべての頂点が計算に使用できる唯一の場所です。 「シングルパスワイヤフレーム」技術は、この情報を使用してジオメトリを変更せずに追加情報を追加します。この手法を使用する場合、他のすべての値をパススルーする必要があるのはちょっと面倒です。しかし、私たちはそうしなければなりません。 –

関連する問題