首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GLSL gl_Position中的第四个维度是什么?

GLSL gl_Position中的第四个维度是什么?
EN

Stack Overflow用户
提问于 2018-04-12 02:29:26
回答 1查看 1.8K关注 0票数 4

我正在学习OpenGL,目前我正在编写一个着色器,但我不明白为什么gl_Position变量是一个vec4,而不是我期望的vec3。我当然希望这样,因为它使用的是3D空间,而不是4D空间。

我希望我的假设至少是正确的,即gl_Position的前三个字段确实是位置的x、y和z坐标。

如果我的问题不够清楚:gl_Position的第四个字段是什么。

顺便说一下,我使用的是GLSL3.2和OpenGL 1.5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-12 02:43:28

gl_Position是一个Homogeneous coordinates。在orthographic projection中,第4个组件的w为1。作为perspective projection的结果,该组件假定为1以外的另一个值。

在归一化的设备空间中,gl_Position可以被Perspective divide转换为Cartesian coordinate

代码语言:javascript
代码运行次数:0
运行
复制
vec3 ndc = gl_Position.xyz / gl_Position.w;

gl_Position是剪辑空间坐标。在剪辑空间中,执行场景的剪辑。

如果xyz分量位于由点的齐次坐标的反向w分量和w分量定义的范围内,则该点位于剪裁空间中:

代码语言:javascript
代码运行次数:0
运行
复制
-w <=  x, y, z  <= w.

另请参阅Transform the modelMatrix

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49782148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档