2

したがって、GL_TRIANGLE_FAN を使用して 3 辺のピラミッドを描画する場合は、中央に 1 つの頂点、下部に 3 つの頂点を指定します (実際には 4 つですが、意味がわかりますよね?!)。

ピラミッドの ​​3 つの面 (側面) すべての面法線を計算できます。

質問は、その頂点を描画する呼び出しが 1 つしかない場合、すべての面 (側面) の最初の (中心) 頂点に異なる法線を割り当てるにはどうすればよいですか?

基本的に、三角形を構成する 3 つの頂点すべてに同じ面法線を割り当て、次の 2 つの三角形に同じことを割り当てる必要があります。

しかし、頂点描画関数を 1 回だけ呼び出したときに、最初の (中心) 頂点に法線を 3 回割り当てる方法がわかりません (GL_TRIANGLE_FAN でも可能ですか?!)。

その頂点法線を glNormal3f(0.0f, 0.0f, 1.0f) に設定するのは良くありません (正しいように見えますが)。頂点間の色補間が正しくないからです。

4

1 に答える 1

4

頂点が単なる位置であるというのはよくある誤解です。頂点は、位置、法線、テクスチャ座標などのセット全体です。頂点ベクトルの属性を 1 つだけ変更すると、非常に異なる頂点が得られます。

したがって、頂点を 1 つだけ持つことはできず、法線を複数持つことができます。これは、頂点の定義方法そのものと矛盾します。

于 2012-10-26T15:00:03.083 に答える