glDrawElements を使用してオブジェクトを描画する場合、OpenGL でフラット シェーディングを実現することは可能ですか? 理想的な方法は、可能であれば、各三角形の法線を 1 回だけ計算することです。
ソリューションは、プログラマブル パイプライン (コア プロファイル) のみを使用する必要があります。
実際、頂点を複製せずにこれを回避する方法はありますが、それぞれにいくつかの制限があります (少なくとも、OpenGL の限られた経験で考えられるもの)。
各三角形の法線の定数値を与える 2 つの解決策を確認できます。
flat
を介して値を与える頂点を選択します。高速ですが、三角形全体の法線として 1 つの頂点の法線を取得します。これは正しく見えない場合があります。残念ながら、これを行う唯一の方法は、すべての頂点を複製することです。これは、属性が頂点ごとであり、三角形ごとではないためです。
あなたがそれについて考えるとき、これは私たちが即時モードでしたことです...