gpt4 book ai didi

ios - PlayN iOS 横屏模式

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:59 26 4
gpt4 key购买 nike

我的游戏专为横向设计(屏幕分辨率 1024*768 - iPad 分辨率)。

我的游戏场景在 PlayN 支持的每个平台(Android、html 等)上都能正确呈现。仅限 iOS 的问题。

我已经准备好 iPad 屏幕分辨率的所有资源,设置 info.plist 文件,使用 IOSPlatform.register(app, IOSPlatform.SupportedOrients.LANDSCAPES); 注册平台

当我运行我的应用程序时,关于设备方向的一切都是正确的,但游戏场景没有完全呈现。它以 768*768 分辨率渲染(并非所有场景对象都是可见的 - 只有属于 768*768 矩形的对象是可见的)并且剩余的屏幕空间是黑色的。

我通过以下方式调查了这个问题:

  1. 对 rootLayer 应用缩放变换(以确保渲染整个场景)。 PlayN.graphics().rootLayer().setScale(0.75f, 0.75f);结果 - 游戏场景适合 768*768 矩形,我可以看到所有游戏场景对象。
  2. 将 translate 变换应用到 rootLayer(以确保 PlayN 不会渲染 768*768 矩形之外的场景)。 PlayN.graphics ().rootLayer().setTranslation(1024.0f - 768.0f, 0.0f);结果 - 游戏场景被平移,但不属于 768*768 屏幕矩形的对象不可见。

我的猜测是 PlayN 为 768*1024 屏幕分辨率(默认 iPad 方向分辨率)准备了绘图上下文。当它渲染屏幕时,位于 768*1024 矩形之外的对象被裁剪(不渲染)。

任何可能导致这种奇怪行为的帮助或想法将不胜感激。

谢谢!

最佳答案

问题如下:

  • iOS 不会在设备旋转后更改主窗口框架和 Root View 框架(而 Android 会 - 我已经检查过)。
  • PlayN 代码要求旋转后的 View 大小应从 768*1024(默认方向)更改为 1024*768。

实际结果:PlayN 使用变换矩阵变换游戏场景,但不改变 OpenGL 帧缓冲区大小(帧缓冲区大小仍为 768*1024)

我已通过将下一段代码添加到 IOSGLContext 来解决此问题:

@Override
public void setSize (int width, int height)
{
if (UIDeviceOrientation.LandscapeLeft == orient || UIDeviceOrientation.LandscapeRight == orient)
{
Console.WriteLine("Swap IOSGLContext width and height for " + UIDeviceOrientation.wrap(orient));
viewWidth = height;
viewHeight = width;
}
else
{
viewWidth = width;
viewHeight = height;
}
super.setSize(viewWidth, viewHeight);
}

现在一切正常!

如果您有任何其他解决此问题的想法,我很乐意讨论)

谢谢!

关于ios - PlayN iOS 横屏模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com