iphone - OpenGL ES : getting a fixed size for an object

标签 iphone android opengl-es

我有一个开放的 GL ES (1.1) 场景,其中包含许多 3d 对象和一个“玩家”模型。我希望播放器具有相同的像素大小,而不管 Android 手机或 Iphone 的屏幕方向如何。 我使用 glOrtho 或广告牌。那是一个透视 3d 场景,但我只希望对象在两个屏幕方向上具有相同的大小。目前,如果我旋转手机,我会保持相同的宽高比,但场景会在横向模式下“缩小”。 我怀疑我必须使用 glFrustrum 的参数来获得它;但还不知道该怎么做。 所以欢迎任何想法!

谢谢

最佳答案

当设备从 a 转向时,您需要更改纵横比,否则对象的大小将发生变化。想象一下你自己透过 window 向外看,如果你不改变与 window 的距离(即放大和缩小),当你“转身”时, window 另一边的物体只会是相同的大小窗口侧身,窗口纵横比发生变化(这个比喻开始不行了)。

如果您在 View 中绘制一个边长为屏幕短边的正方形,那么当您将手机横向转动时,您应该仍然有一个正方形,仍然覆盖屏幕上的相同区域。

如果您使用 gluPerspective 中的代码,事情可能会更容易计算。 .您将纵横比设置为实际纵横比,将 fovy 固定为第一个纵横比。然后,您可以将此纵横比的 fovx 用作旋转 View 的 fovy

关于iphone - OpenGL ES : getting a fixed size for an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433756/

相关文章:

iphone - iOS 7 如何实现 UI 元素,以便它们根据您使用的 SDK 编译而有所不同?

iphone - 创建炸弹 - Cocos2d/Box2d

iphone - 用于旋转、调整大小、在 UIView 边缘移动的 UIGestureRecognizer

java - 通知图像 ContentProvider 有关外部存储上的新文件的信息

c++ - 纹理映射到瓷砖

iphone - 列出 iPhone 应用程序文档文件

android - Genymotion 和 ADB 之间的区别

Java/Android : How to update org. apache.http 已弃用

c++ - 如何在 QOpenGLWidget 中渲染三角形?

iphone - glCopyTexture2d 比使用帧缓冲区对象慢吗