OpenGL を使用してオブジェクトを描画する方法を理解しようとしています。質問は非常に単純ですが、それでもどこにも明確な答えが見つかりません(または私は完全に愚かです:))。問題を説明しましょう。
1) 画面に 2 つの三角形を配置するだけです。三角形の座標 (x、y、z、w) は次のとおりです。
Triag1 = { {0, 0, -0.5, 1} , {1, 0, -0.5, 1}, {0, 1, -0.5, 1} } // a bigger one
Triag2 = { {0, 0, 0.5, 1} , {0.5, 0, 0.5, 1}, {0, 0.5, 0.5, 1} } // a smaller one
2) ビューも投影変換も使用していません
3) 各三角形の「デフォルト」の色を頂点属性の 1 つとして渡し、さまざまな属性を使用してフラグメント シェーダーに単純にバイパスします。Triag1 は青、Triag2 は赤
ネット上のすべてのチュートリアルでは、OpenGL は右手系の座標系を使用し、Z 軸は「画面外」を指すと述べています。したがって、オブジェクトのそれぞれの z 座標を考慮すると、小さな赤い三角形とその背後にある大きな青い三角形が表示されると予想されます。どんなにそれが起こっていない。大きな太い青い三角形しか見えません。
三角形のそれぞれの z 座標を交換すると (Triag1 は正の z 座標を取得し、Triag2 は負の z 座標を取得します)、期待どおりの結果が得られます。しかし。これは、どういうわけか、Z 軸が画面の外ではなく、画面の内側を指していることを意味します。
より経験豊富な人が、私が見逃している基本的な側面を説明してもらえますか?
PS GLUT も GLM も、さまざまな OpenGL マトリックスをセットアップするための呼び出しもありません。「頂点を GPU に渡す - シェーダー プログラムを有効にする - ものを描画する」のみ