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