首页 > 解决方案 > 在 android 上发布 ShapeRenderer 行为

问题描述

我正在使用 ShapeRenderer 在蒙版纹理下绘制某种圆形指示器。一切都在桌面上按预期完美运行,但是在 android 上运行相同的代码时,形状渲染总是在最前面。另一个奇怪的区别是所有形状渲染函数调用似乎都是倒置的,因此第一个形状被绘制在顶部。我已经在 2020 年 6 月的 libgdx 夜间构建和 20/09/2020 夜间构建中重现了该问题。

这是代码:

myConstructor(){
   sr = new ShapeRenderer();
   sr.scale(1 + 1.1f * GUI.ZOOM_RATIO, 1 + 1.1f * GUI.ZOOM_RATIO, 0f);
}

draw(Batch g,float arg){
   g.end(); // I have some batch rendering before
   sr.begin(ShapeType.Filled);
   sr.setColor(Color.CYAN);
   sr.circle(indX, indY, indicatorW + GUI.fit2Density(2));
   sr.setColor(Color.DARK_GRAY);
   sr.arc(indX, indY, indicatorW, 0f, degrees);
   sr.end();
   g.begin();
   g.setColor(1f, 1f, 1f, 1f);
   g.draw(coolDownIndic, indX - coolDownIndic.getWidth() / 2 - GUI.fit2Density(2),
                            indY - coolDownIndic.getHeight() / 2);
}

在桌面上,我看到在圆弧上渲染的纹理和圆上的圆弧。这个顺序在 android 上是完全相反的,你可以在这里看到预期的行为桌面渲染和不正确的行为在这里Android 渲染(顶部的紫色云是与问题无关的粒子发射器效果)。

我想这是一个错误,请注意我在 ShapeRenderer 上使用 scale 方法,不确定它是否可以关联。

任何帮助,将不胜感激。

标签: androiduser-interfacelibgdxrenderingz-index

解决方案


推荐阅读