【发布时间】:2012-03-18 02:24:48
【问题描述】:
我正在开发的游戏在 Java 后端和 IE 10 上完美呈现。但是在 Chrome 和 Android 上的呈现很奇怪。我假设这分别是因为 WebGL 和 OpenGL。 这是它在 IE 上的外观。
这是它在 Chrome 上的外观,它在 Android 后端上的外观也完全相同。
背景没有被渲染,只有第一个和最后一个文本元素被渲染了
在 Chrome 和 Android 中运行时,纹理大小等是否有任何限制,我需要特别注意什么?我所有的纹理都有 2s 的维度。我什至尝试使用 2s 的幂创建每个表面,但似乎没有帮助。
更新:我修复了以下问题。这是由于我编写的 UI 工具包中的一个错误,每次设置小部件的文本时都会创建一个新表面。
我不确定是否与以下问题有关,但有时游戏会在 Android 上崩溃并出现以下异常:
03-16 14:22:29.010 E/AndroidRuntime(16253): FATAL EXCEPTION: GLThread 10
03-16 14:22:29.010 E/AndroidRuntime(16253): java.lang.StackOverflowError
03-16 14:22:29.010 E/AndroidRuntime(16253): at playn.android.AndroidPlatform.log(AndroidPlatform.java:28)
03-16 14:22:29.010 E/AndroidRuntime(16253): at playn.core.PlayN.log(PlayN.java:120)
......
......
......
playn.core.gl.GLContext$Pender.process(GLContext.java:242)
03-16 14:22:29.010 E/AndroidRuntime(16253): at playn.core.gl.GLContext$Pender.process(GLContext.java:242)
03-16 14:22:29.010 E/AndroidRuntime(16253): at playn.core.gl.GLContext$Pender.process(GLContext.j
这是因为在http://code.google.com/p/playn/source/browse/core/src/playn/core/gl/GLContext.java,GLContext$Pender.process() 似乎在一个永无止境的循环中被调用。不过,这种情况并非每次都会发生。
【问题讨论】:
-
java.lang.StackOverflowError...看来您来对地方寻求帮助了 ;) -
有些是 512x512,有些是 1024x1024。我的手机是三星 Galaxy R,我很确定它能够处理这些纹理尺寸。
-
你能把代码贴在任何地方吗?我认为您的代码可能正在做一些事情,例如创建一个或多个纹理并将它们留在每一帧上作为垃圾。待处理的处理不能无限循环,因此您必须将大量的纹理排队等待一次全部释放。
-
@samskivert 可能就是这样。我将尝试发布我的代码的简洁版本。但是,这仅在实际游戏进行时发生,并且在显示 UI 时不会发生。但是 UI 渲染仍然有问题(缺少背景,大部分文本未绘制)。我注意到在示例中,纹理的大小甚至不是 2 的幂,而且它们在我的手机上效果很好。知道为什么吗?我的游戏在 Java 后端和 IE 10 上看起来都很好。
-
PlayN 会根据需要自动将纹理大小转换为 2 的幂。
标签: android google-chrome opengl-es webgl playn