【发布时间】:2015-07-29 07:21:21
【问题描述】:
在 OpenGL 中,我读过一个顶点应该用 (x,y,z,w) 表示,其中 w = z。这是为了启用透视分割,其中 (x,y,z) 除以 w 以确定它们的屏幕位置,因为透视效果。如果它们只是除以原始 z 值,那么 z 在任何地方都是 1。
我的问题是:为什么需要将 z 分量除以 w?为什么不能只将x和y分量除以z,使屏幕坐标具有透视效果,然后只使用原始未修改的z分量进行深度测试?这样一来,你就根本不用使用 w 组件了....
显然我错过了什么!
【问题讨论】:
-
我认为Z轴也需要分割才能正确进行坐标插值。
-
因为透视变换不是这样工作的。也许你应该看看这个:songho.ca/opengl/gl_projectionmatrix.html
-
你应该阅读更多关于这个主题的材料——
Transform,例如“OpenGLSuperBible”的第 4 章。只要你理解了这些空间和它们对应的变换之间的关系,你就会清楚地了解 w 组件是如何工作的。