我正在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中的视口?
这是正确的实现方式吗? 我想要实现的目标是什么?
我是否误解了一切 完全?
感谢您的帮助!
答案 0 :(得分:2)
你应该使用矩阵在世界各地移动(glOrthof是用指定参数创建的投影矩阵乘以当前矩阵),在OpenGL ES 2.0中你负责在着色器中使用矩阵(主要用于计算最终位置,你乘以位置乘以ModelViewProjection矩阵),例如,您可以将大的2D平面与屏幕平行,然后沿Z轴移动(视图矩阵)以获得ZoomIn ZoomOut功能。
可以获得良好的资源:
或浏览一些游戏设施页面,例如gamasutra gamedev.net