【问题标题】:LibGdx Dynamic (Runtime) TexturesLibGdx 动态(运行时)纹理
【发布时间】:2018-02-19 20:43:15
【问题描述】:

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

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

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

ShapeRenderer

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

像素图

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

纹理重新着色

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

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

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

问题 2 替代方式?

也许有其他方法可以解决我的问题?

感谢阅读!

【问题讨论】:

  • ShapeRenderer 非常适合运行时游戏。在某些情况下,它可能比绘制精灵要慢,例如在绘制大实心圆时。

标签: android libgdx


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多