Window Space Coordinates([-1,1]^3の標準化されたデバイス座標、追加のスケーリングglViewportとglDepthRangeを使用)で深さテストが実行されたのはちょうど "事実"です。
私の視点から見ると、それはOpenGLライブラリのデザインの観点の1つです。それはあなたのOpenGLのバージョンで利用可能な場合、このOpenGLの拡張/ OpenGLのコア機能https://www.opengl.org/registry/specs/ARB/depth_clamp.txtを排除するためのアプローチの
一つ。
私は、透視投影では「遠方のクリッピング平面」について何も記述しません。
3.1透視投影の場合は、投影の中心となる点\ vec {c}を設定する必要があります。投影平面Tの分割点の任意点\ vec {r}と\ vec {r}を、以下のように仮定してみましょう:\ vec {r} - \ vec {r_0}、\ vec {n}} \ 012 c}投影の中心。他の場合、\ vec {r}と\ vec {c}は1つのハフ空間にあり、\ vec {r}は破棄されるべきです。
3.4投影のアイデアは、交差点を見つけることである\ VEC {I} \面T とVEC {I} =(1-T)\ VEC {C} + T \ VEC {R}
3.5それは あるように(\ VEC {I} - VEC {R_0} \ \ VEC {N})= 0
=>
((1-T)\ VEC {C} + T \ VEC {R} - VEC \ {R_0}、\ VEC {N})= 0
=>
(\ VEC {C } vec {r_0}、\ vec {n})= 0
3.6。 "3.5"から導かれたtは "3.4"に代入することができ、平面Tへの投影を受け取ります。
3.7。投射後、ポイントは飛行機の中にあります。しかし、イメージ平面がOXY平面に平行であると仮定すると、投影後に元の「深度」を使用するように提案することができます。
したがって、遠方の平面を全く使用しないことが可能です。また、[-1,1]^3モデルを明示的に使用しないでください。
p.s.私は正しい方法でラテックスの式を入力する方法を知らない、s.t.彼らはレンダリングされます。
ニアクリッピングプレーンをゼロに近づけると、遠いクリッピングプレーンをあまりにも遠くに設定することと同じ効果が生じることに注意することは重要です。 http://www.opengl.org/archives/resources/faq/technical/depthbuffer.htmによると、失われたビットの数はlog2(far/near)です。 –