gpt4 book ai didi

opengl - gl_Position.w 的负值?

转载 作者:行者123 更新时间:2023-12-01 23:18:53 34 4
gpt4 key购买 nike

gl_Position 的 w 分量是否需要大于零?因为当我将其设置为负数时,不会绘制任何内容,但正数就可以了。

gl_Position = vec4(vPos,0,-1);

顺便说一句,面部剔除未启用。

最佳答案

Has the w component of gl_Position required to be greater than zero?

不,但是 gl_Position.xyz / gl_Position.w 的结果必须在 (-1,-1,-1) 到 (1,1,1)(标准化设备空间)范围内。这意味着结果的每个分量( xyz )必须是 >= -1.0<= 1.0

enter image description here

但是,如果w分量为负,无论如何都不会绘制任何内容。因为gl_Position定义剪辑空间。齐次坐标位于裁剪空间的条件是

-w <=  x, y, z  <= w.

如果w = -1这意味着:

 1 <= x, y, z  <= -1.

这是永远无法实现的。(参见Why does GL divide gl_Position by W for you rather than letting you do it yourself?)

说明:

坐标设置为gl_PositionHomogeneous coordinates 。如果w Homogeneous coordinate 的组成部分为 1,则等于 Cartesian coordinate由组件构建xyz .

Homogeneous coordinates用于透视投影的表示。

在渲染中,场景的每个网格通常由模型矩阵、 View 矩阵和投影矩阵进行变换。

投影矩阵描述了从场景的 3D 点到视口(viewport)的 2D 点的映射。投影矩阵从 View 空间变换到剪辑空间,并且剪辑空间中的坐标变换为范围为 (-1, -1, -1) 到 (1, 1, 1) 的归一化设备坐标 (NDC)除以w剪辑坐标的组成部分。
超出 NDC 的每个几何体都会被剪裁。


在正交投影中,眼睛空间中的坐标被线性映射到标准化设备坐标。 (通常 w 分量为 1.0)

enter image description here


在透视投影中,投影矩阵描述了从针孔相机看到的世界上的 3D 点到视口(viewport)的 2D 点的映射。
相机视锥体(截棱锥体)中的眼睛空间坐标被映射到立方体(标准化设备坐标)。

enter image description here

关于opengl - gl_Position.w 的负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47233771/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com