LibGdx动态(运行时)纹理

时间:2018-02-19 20:43:16

标签: android libgdx

我正在绘制一些点来代表地图上两队的球员。 每个团队都有自己的颜色。 重要的是要注意点包含两个圆,外边框和内部填充,因此将有两种颜色,边框始终相同。

对我来说,在运行时生成它而不是为每个组合打包纹理是有意义的。

经过研究,似乎有很多方法可以实现这一目标,但每个方法都存在相关问题

ShapeRenderer

ShapeRenderer用于调试目的,不应用于LibGdx开发人员所述的常规绘图 http://badlogicgames.com/forum/viewtopic.php?t=8573&p=38930 出于这个原因,我避免使用这个

像素图

这非常有前途,我喜欢我可以生成两个纹理并为每个sprite重用它们的想法。最大的问题是,通过Pixmap制作的纹理是不受管理的,所以如果OpenGL上下文丢失并重新获得(这可以在Android应用程序中轻松复制,如果用户背景应用程序并从前台恢复它)。我主要针对Android,所以这对我来说是一个问题

纹理重新着色

我以为我可以创建一个灰度点并重新着色它,但由于我的资产有两个部分,我不知道如何选择内圈并填充它。

问题1如何在上下文丢失时恢复Pixmap纹理?

我还没有找到详细说明如何执行此操作的示例?我假设它将在resume生命周期回调中完成,但我需要做什么?

问题2替代方式?

或许还有另一种解决方法吗?

感谢阅读!

1 个答案:

答案 0 :(得分:1)

只加载一个带有白色圆圈的纹理。使用SpriteBatch绘制玩家:首先调用batch.setColor(borderColor)并使用外半径绘制圆Texture,然后调用batch.setColor(fillColor)并使用内半径绘制它。当然,由于两次绘制填充部分会对性能产生一些影响,但如果圆圈足够小,则影响可以忽略不计。