我的游戏是专为景观设计的(屏幕分辨率1024*768 - iPad分辨率)。
我的游戏场景被正确地呈现在PlayN支持的每个平台上(Android,html等)。只有iOS的问题。
我已经准备好了iPad屏幕分辨率、安装info.plist文件、使用IOSPlatform.register(app, IOSPlatform.SupportedOrients.LANDSCAPES);注册平台的所有资源。
当我运行我的应用程序时,关于设备定向的所有内容都是正确的,但是游戏场景并没有完全呈现出来。它是为分辨率768*768而呈现的(并非所有场景对象都是可见的,只有属于768*768 rect的对象是可见的),其余的屏幕空间是黑色的。
我以以下方式对这个问题进行了调查:
PlayN.graphics().rootLayer().setScale(0.75f, 0.75f);结果-游戏场景适用于768*768,我可以看到所有的游戏场景对象。PlayN.graphics ().rootLayer().setTranslation(1024.0f - 768.0f, 0.0f);结果-游戏场景被翻译,但是不属于768*768屏幕的物体是不可见的。我的猜测是,PlayN为768*1024屏幕分辨率(默认的iPad定向分辨率)准备了它的绘图上下文。当它呈现屏幕时,位于768*1024矩形之外的对象被裁剪(未呈现)。
任何能导致这种奇怪行为的帮助或想法都将是非常感谢的。
谢谢!
发布于 2012-10-22 09:51:08
问题在以下方面:
实际结果: 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);
}现在一切都如期而至!
如果你有其他的想法如何解决这个问题,我很乐意讨论它们)
谢谢!
发布于 2012-10-23 18:51:20
下载最新的PlayN-1.5快照(从-> https://github.com/threerings/playn,而不是从google代码)。这个问题在那个版本中是固定的。
https://stackoverflow.com/questions/12892889
复制相似问题