2

頂点のリストとそれらの三角形への配置、および三角形ごとの正規化された法線ベクトルがあります。

理想的には、(triangle,normal) ペアを (vertex,vertex_normal) ペアに変換して VAO に貼り付ける作業をできるだけ少なくしたいと考えています。OpenGL が顔の法線を直接処理する方法はありますか? それとも、特定の頂点が関係する各面を追跡し (インデックス バッファーを計算するときに多かれ少なかれ既に発生しています)、頂点で平均化された法線を手動で計算する必要がありますか?

また、頂点ごとの法線計算を完全にスキップして、フラグメント シェーダーに面法線を直接通知する方法を見つける方法はありますか?

編集:ESデバイスに移植できるものを使用しているため、固定機能のものは使用できません

4

1 に答える 1

3

私は必ずしも最新のフルファット OpenGL 仕様について話すことはできませんが、ES では確かに自分で作業を行う必要があります。

法線は、他のほぼすべてのものと同様に、古い固定パイプラインの下でモーダルでしたが、各頂点にアタッチされていました。フラット シェーディング モデルを選択した場合、GL は補間するのではなく、面の最初の頂点の色を全体に使用します。ES でその動作を再現する方法はありません。

アトリビュートは頂点ごとで、uniforms はせいぜいバッチごとです。ES では、三角形ごとのプロパティを指定する方法がなく、ジオメトリを各頂点に個別に配布できるときにジオメトリの概要を把握できるレンダリング パイプラインの段階はありません。各頂点は個別に処理され、変数は補間され、各フラグメントは個別に処理されます。

于 2013-08-28T23:41:35.377 に答える