2

我正在开发的游戏在 Java 后端和 IE 10 上完美呈现。但是在 Chrome 和 Android 上的呈现很奇怪。我假设这分别是因为 WebGL 和 OpenGL。这是它在 IE 上的外观。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() 似乎从未被调用过结束循环。不过,这种情况并非每次都会发生。

4

1 回答 1

0

我在查看 TriplePlay 库的源代码时突然想到我只能在paint() 中绘制图像。我曾经将部分图像从 spritesheet 复制到不同的小部件。复制是在小部件创建期间完成的,这通常是响应触摸事件而发生的。当我将图像复制切换到paint()内部时,它开始完美运行。

于 2012-03-20T00:31:50.723 回答