在OpenGL ES 2.0中在视口外部绘图

时间:2010-10-26 10:02:25

标签: iphone xcode opengl-es 3d

我正在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中的视口?

  • 这是正确的实现方式吗? 我想要实现的目标是什么?

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

可以获得良好的资源:

powervr opengl es 2 sdk

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