首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不了解gluOrtho2D函数

不了解gluOrtho2D函数
EN

Stack Overflow用户
提问于 2018-04-07 15:36:33
回答 1查看 6.2K关注 0票数 7

我不能用gluOrtho2D()函数做什么?它是将原点固定在OpenGL窗口上的某个特定点还是其他位置?

这是因为gluOrtho2D(1,1,1,1)将原点固定在窗口中间。

如果它不能在某一点修复原点,那么我有没有办法修复原点,因为我读到没有所谓的"OpenGL窗口坐标“这样的东西?

我读到gluOrtho2D(0,640,480,0)修复了窗口左上角的原点,但如果其他值作为参数发送,我如何知道它会移动到哪里?

EN

回答 1

Stack Overflow用户

发布于 2018-04-07 15:46:09

gluOrtho2D设置了一个Orthographic projection矩阵,具有给定的左、右、上和下,但固定的近平面和远平面分别为-1和1。

代码语言:javascript
复制
gluOrtho2D( left, right, bottom, top );

这意味着

代码语言:javascript
复制
gluOrtho2D(0,640,480,0)

创建投影矩阵,该矩阵将0映射到视口的左边界,将640映射到右边界,将480映射到底部,将0映射到顶部。

左、右、底、顶、近和远的值定义一个长方体。长方体体积内的所有几何体在视口上都是“可见”的。

投影矩阵描述从场景的3D点到视口的2D点的映射。它从眼睛空间转换到剪辑空间,剪辑空间中的坐标通过除以剪辑坐标的w分量转换为归一化设备坐标(NDC)。NDC在(-1,-1,-1)至(1,1,1)范围内。

剪裁空间之外的每个几何体都会被剪裁。

在正交投影中,眼睛空间中的坐标被线性映射到规格化设备坐标,剪辑空间坐标等于规格化设备坐标,因为w分量是1(对于Cartesian coordinate)。

正交投影矩阵:

代码语言:javascript
复制
r = right, l = left, b = bottom, t = top, n = near, f = far 

2/(r-l)         0               0               0
0               2/(t-b)         0               0
0               0               -2/(f-n)        0
-(r+l)/(r-l)    -(t+b)/(t-b)    -(f+n)/(f-n)    1
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49705057

复制
相关文章

相似问题

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