【问题标题】:Android. LibGDX. Textures becomes black rectangles安卓。 LibGDX。纹理变成黑色矩形
【发布时间】:2018-03-18 12:50:53
【问题描述】:

我的问题一步一步:

1)我在屏幕上有 0 张图片。

2) 我创建了第一个纹理并放在屏幕上。有我的代码来创建纹理:

  fun getPlanetTexture(planetDiameter: Float): Texture {
    val planetImage = FileSystem.getPlanetBodyFor(planet)
    if (!planetImage.exists()) {
      val planetBitmap = getPlanetBitmap(planetDiameter)
      FileSystem.savePlanetBody(planet, planetBitmap)
    }
    val textureFileHandle = AbsoluteFileHandleResolver().resolve(planetImage.toString())
    return Texture(textureFileHandle)
  }

3) 纹理出现在屏幕上,但如果绘制成黑色矩形。

4) 我保存应用程序的状态以将模型保存在首选项中,以便在我打开应用程序时获得相同的文件和纹理。

5) 我关闭了应用程序

6) 我打开应用程序

7) 达达!我的纹理绘制正确(它是美丽星球的纹理)

8) 我在屏幕上添加了另一个纹理。

9) 我的新纹理和旧纹理也变成了黑色矩形!

我应该怎么做才能避免黑色矩形并始终正确绘制纹理?

这是我用来绘制纹理的代码

  override fun draw(sb: SpriteBatch, sr: ShapeRenderer) {
    val x = model.x * bounds.x
    val y = model.y * bounds.y
    sb.draw(body, x - body.width / 2, y - body.height / 2)
  }

【问题讨论】:

  • 不要对纹理引用使用静态。 Android 在您的游戏打开之间保留静态引用,因为底层的 Application 对象可能仍然存在。但是游戏的新实例具有新的 OpenGL 上下文。
  • 我从不使用静力学

标签: android libgdx drawing


【解决方案1】:

经过一番搜索,我找到了解决方案:

只需将此结构读取纹理:

Gdx.app.postRunnable(new Runnable {
  val texture = Texture(...)
})

【讨论】:

  • 感谢您的解决方案!加载纹理图集时遇到同样的问题。它奏效了!
猜你喜欢
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
相关资源
最近更新 更多