我有一个开放的 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/