java - Libgdx Sprite 深度在 Android 上与在桌面上不同

标签 java android opengl-es libgdx

我在开发游戏时遇到了一个奇怪的问题。所以我创建了一个渲染方法,其中 Sprite 按特定顺序绘制以创建深度感。如果这是有道理的。所以背景图 block 首先被渲染,然后是在背景图 block 之后绘制的 map 特征,因此它们出现在背景图 block 上方。现在的问题是,这个系统在我的桌面上工作得很好,我得到了想要的行为。但是,在我的安卓设备或任何安卓模拟器上, Sprite 的绘制顺序似乎被忽略了。我在背景图 block 之后绘制的 map 要素不显示,因为它们被背景图 block 阻挡,即使它们是在图 block 之后绘制的。当一小部分“树” Sprite 显示在 map 边缘时,我注意到了这一点,因为它没有被背景图 block 完全阻挡。我将上传图片进行演示。

这是它在我的桌面上的样子。非常好。 map 特征确实绘制在背景图 block 的顶部并且没有问题。我测试了我的深度方法,看看我是否错误地实现了它。所有测试在我的桌面上都运行良好。我可以成功渲染不同深度的 Sprite 。

DESKTOP 这就是它在安卓设备/模拟器上的样子。完全相同的代码。请注意从屏幕边缘冒出来的树。它的底部被瓷砖挡住了。所以只渲染了它的上半部分。我尝试为瓷砖使用半透明纹理。我能够看到所有 map 功能。所以我知道纹理加载得很好,问题出在其他地方。我也不认为这是代码问题,因为它在我的桌面上运行良好。

enter image description here

有没有人有类似的想法或经历过类似的事情?

最佳答案

所以我想通了。我已经在 HashMap 中收集了每个深度,并将深度(整数)用作键,并使用遍历其键集的 for 循环对其进行了迭代。这样我就无法直接控制迭代顺序。在我的桌面上迭代键集的顺序不同。 android 环境遵循不同的迭代,因此深度没有按照我希望的顺序呈现。我改用了一个列表,并使用我想要的顺序遍历它。它奏效了。

关于java - Libgdx Sprite 深度在 Android 上与在桌面上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125294/

相关文章:

java - JPA 中 @Access 注释在实体级别的用途是什么?

java - JUnit 测试 groovy 脚本导致 JUnit 测试文件中的 "unable to resolve class"试图测试另一个 groovy 脚本

android - SherlockActionBar 样式不适用于 ICS

java - Java 中的本地化序号

iPhone Cocos2D - 将 float 转换为 GLubyte

ios - 使用 GoogleVR 和 SceneKit 时纹理显示不正确

java - 从对象中获取值并添加到 jcombobox 中

java - 无法返回 boolean 值的真值

android - 在操作栏中使用图标时应该使用什么颜色?

opengl-es - 在WebGL2中使用drawBuffers时遇到一些问题