OpenGL と 3D の理解を深めるために、CPU のみで実行される単純なレンダリング パイプラインを実装しようとしています。理にかなっている場合は、OpenGL と同じ標準を使用しようとしています。たとえば、 OpenGL のような右手座標系を使用しています。何か新しいことを学ぶときによくあることですが、答えが見つからない質問に出くわしました。以下の内容が意味をなさない場合は、ご容赦ください。
クリップ スペース (gl_Position
頂点シェーダーで指定する座標) では、負の Z はユーザーから離れています。しかし、深度バッファーでは、正の Z が離れています (既定の深度設定を使用している場合)。
この質問に対する 1 つの答えは、フリップが射影変換によるものであることを示唆しています。しかし、逆を示唆する小さな実験(WebGL/OpenGL ES に基づく) を行いました。クリップ空間では、射影変換を使用しなくても、Z はユーザーから離れた方向を向いています。
したがって、ある時点で、 を渡した後gl_Position
、OpenGL は Z 座標を反転させます。それはいつ、どのように?
ビューポート変換にあると思いますが、これをサポートするドキュメントを見つけることができませんでした。