【问题标题】:OpenGL Vertex Value Range (GLFloat)OpenGL 顶点值范围 (GLFloat)
【发布时间】:2011-02-27 21:33:09
【问题描述】:

我正在学习 OpenGL,但很难找到坐标系的清晰定义。

如何判断视口中将显示哪些数值范围?

【问题讨论】:

  • 唉,我使用的是 Gl 3.0,所以在我自己设置之前,一些矩阵的东西不会有帮助:) 据我所知。感谢您的快速回答。
  • 然后我给你的范围(-1到+1)适用于你的顶点着色器的输出(即它分配的gl_Vertex变量)。
  • @Ben:啊,谢谢,突然间答案似乎很明显,因为着色器输出哈哈

标签: opengl graph coordinates coordinate-systems vertex


【解决方案1】:

-1.0 到 +1.0(应用所有转换后)。

此信息以某种迂回的方式隐藏在glViewport documentation 中。我选择了 MSDN 版本的文档,因为更多其他在线资源在转换为 HTML 期间会破坏公式(这是正确的公式,但无法识别)。

您可以通过应用适当的缩放和平移因子来获得所需的任何转换前坐标系。 glOrtho 使这在 GL 1.x - 2.x 中变得容易。在 OpenGL 3.x 中,您使用顶点着色器进行转换。

【讨论】:

    【解决方案2】:

    可见的顶点值范围由两个变换矩阵控制,ModelViewProjectionModelView 矩阵使用glRotateglTranslate 类型的操作构造,Projection 矩阵使用glOrthoglPerspectivegluLookAt 创建。

    通过以下变换将顶点 V 转换为视口坐标,并且在目标空间中剔除不可见部分(所有轴为 [-1,1])。

    V'' = Projection * ModelView * V
    

    但是,glOrthoglPerspective 将可见性范围作为模型视图空间中给定的输入。这些范围与转换后的顶点相当:

    V' = ModelView * V
    

    如果您将单位矩阵用作ModelView,您可以将您的顶点值与glOrthoglPerspective 的顶点值进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      相关资源
      最近更新 更多