【问题标题】:Drawing outside the viewport in OpenGL ES 2.0在 OpenGL ES 2.0 中的视口外绘图
【发布时间】:2011-04-30 16:06:47
【问题描述】:

我正在使用 OpenGL ES 1.1 构建一个 2D 项目,但决定切换到 2.0,因为我只打算为 iPad 开发。

在 1.1 中,当设置视口时,概念似乎是您仅查看完整 3D 空间的一部分,例如

CGRect rect = view.bounds;     
    glOrthof(-1.0,                                          // Left
              1.0,                                          // Right
             -1.0 / (rect.size.width / rect.size.height),   // Bottom
              1.0 / (rect.size.width / rect.size.height),   // Top
              0.01,                                         // Near
              10000.0);                                     // Far
    glViewport(0, 0, rect.size.width, rect.size.height);

(取自 OpenGL ES 上的 Jeff LaMarche's tutorial

从我所看到的 2.0 的所有内容来看,没有 GlOrthof 方法来指定您正在查看的内容,只有 glViewport 调用,它被描述为设置您正在绘制的平面。

我的目的是绘制一个可以放大和平移的 2D 线框地图。我假设要实现这一点,我会在视口内部和外部进行绘制,然后在用户平移时更改视口坐标。

  • 如何在外部绘图 OpenGL ES 2.0 中的视口?

  • 这是实现的正确方法吗 我想达到什么目标?

  • 我是否误解了一切 完全?

感谢您的帮助!

【问题讨论】:

    标签: iphone xcode opengl-es 3d


    【解决方案1】:

    您应该使用矩阵在世界范围内移动(glOrthof 将当前矩阵乘以使用指定参数创建的投影矩阵),在 OpenGL ES 2.0 中,您负责在着色器中使用矩阵(主要用于计算最终位置,将位置乘以ModelViewProjection 矩阵),例如,您可以让大的 2D 平面平行于屏幕并沿 Z 轴(视图矩阵)移动以获得 ZoomIn ZoomOut 功能。

    很好的资源是可用的:

    powervr opengl es 2 sdk

    或浏览一些游戏开发页面,例如 gamasutra gamedev.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      相关资源
      最近更新 更多