我正在学习OpenGL,并且很难找到一个清晰的坐标系定义。
如何判断视口中将显示哪些数值范围?
答案 0 :(得分:4)
-1.0到+1.0(应用所有转换后)。
此信息以某种迂回的方式隐藏在glViewport
documentation中。我正在选择MSDN版本的文档,因为更多其他在线资源在转换为HTML时会破坏公式(这是正确的公式,但无法识别)。
您可以通过应用适当的缩放和平移因子来获得所需的任何预变换坐标系。 glOrtho
在GL 1.x - 2.x中简化了这一点。在OpenGL 3.x中,您使用顶点着色器进行转换。
答案 1 :(得分:1)
可见的顶点值范围由两个变换矩阵控制, ModelView 和 Projection 。使用glRotate
,glTranslate
类型的操作构建 ModelView 矩阵,并使用glOrtho
,glPerspective
创建投影矩阵或gluLookAt
。
使用下面的变换将顶点V转换为视口坐标,并在目标空间中剔除不可见部分(所有轴都为[-1,1])。
V'' = Projection * ModelView * V
然而glOrtho
glPerspective
获取可见范围作为模型视图空间中给出的输入。这些范围与变换后的顶点相当:
V' = ModelView * V
如果您使用ModelView
身份矩阵,则可以将顶点值与glOrtho
或glPerspective
的顶点值进行比较。