不,这只是渲染裁剪,在查看翻译后。因此,如果您将一个基于例如{0,0,-100}的对象渲染到相机位置为{0,0,-110},则仍然会在裁剪平面内进行渲染,但是比-110+zFar和-110-zNear更远的东西将被裁剪。这是一个相当简单的解释,但实际上它是如何工作的。
不要混淆坐标可以表示或转换的不同空间。勾选的答案过于简化,以至于在许多情况下可能甚至不是正确答案。zNear和zFar是距离“相机”或视图中的眼睛的世界单位距离,但不是世界坐标。因此,它们必须是正数。它们也有点在负的眼睛或相机空间中。只有当相机与指向-z空间的z轴对齐时,勾选的答案才是正确的,或者你关于正在被裁剪的内容的陈述是正确的。它们确实有助于定义最近和最远的裁剪边界,但它们不标记场景的裁剪边界。这又取决于您相机的位置。还有您对“场景”的定义。通常说OpenGL没有相机。但我不喜欢那样想。有一个视图,因此有一个相机。使用lookAt函数,您可以将视图/相机放置在场景中的任何位置,并朝向任何方向。对我而言,您的“场景”是您正在渲染的所有对象,而不仅仅是这些对象的当前视图。以这种方式思考,您的zNear和zFar根本不限制您的场景,它们只限制相机的视野深度。它更像是从您的眼睛伸出的卷尺。随着您对事物的视图变化,它的向量也会发生变化。例如,想象一个由沿x和z轴排列的块网格组成的场景,但所有块都在y = 0处。如果您的相机与z轴对齐,则zNear和zFar与世界z轴相关。你可能会看到一排排远离相机的块。但是,如果相机漂浮在所有物体上方,y为+100,并朝下指,那么您会将其视为一个网格。在这种情况下,zNear和zFar与场景中的z轴无关。它们只与相机空间中相机的z轴上物体的裁剪有关。
-110+zNear
? - Reto Koradi