在 iOS 上使用 OpenGL-ES 2.0 设置横向正交投影的正确方法是啥?
Posted
技术标签:
【中文标题】在 iOS 上使用 OpenGL-ES 2.0 设置横向正交投影的正确方法是啥?【英文标题】:What's the correct way to set up a landscape orthographic projection using OpenGL-ES 2.0 on iOS?在 iOS 上使用 OpenGL-ES 2.0 设置横向正交投影的正确方法是什么? 【发布时间】:2011-11-28 22:27:37 【问题描述】:这一切都在 OpenGL ES 2.0...
我正在尝试将 3D 透视投影与 2D 正交投影混合,以便在我的游戏中将 HUD 放在 3D 场景的顶部。
游戏以横向运行,我真的很困惑如何处理设备方向。
我正在使用合适的投影矩阵渲染 3D 内容,并将 modelView 矩阵和我的照明旋转 90 度,因此 3D 场景是正确的。这一点都可以正常工作。
我的问题是我不知道如何正确设置 2D 投影矩阵,因此当设备处于横向且主页按钮位于左侧时,原点位于左上角。
如何正确构造正交矩阵以使这种情况发生?我目前正在使用这个
// OrthoMatrix does the same as the old GLOrthof function (left, right, bottom, top, near, far);
projectionMatrix2D = mat4::OrthoMatrix(0, screenWidth, screenHeight , 0, -1.0, 1.0);
但是,如果设备是纵向的,并且主页按钮在底部,这只是将原点放在左上角,并且在我手中旋转设备意味着一切都在它的一侧。
我应该尝试更改 2D 投影矩阵还是需要做其他事情?
【问题讨论】:
【参考方案1】:我在 Gamedev 上问过这个问题,但以更笼统的方式提出并得到了有用的答案。
How can I create an orthographic display that handles different screen dimensions?
【讨论】:
以上是关于在 iOS 上使用 OpenGL-ES 2.0 设置横向正交投影的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL ES 2.0 - iOS - 使用 FBO 渲染到纹理
iPhone 成本与收益 - OpenGL ES 1.x 与 2.0
如何让 OpenGL-ES 在带有 SDL2 的 Raspberry Pi 上工作?