私はlibGdxでシンプルなカスタムアクターを作った。複数のカスタムアクターのパフォーマンスをレンダリングするLibGdx
public class HealthBar extends Actor {
private Texture background;
private Texture bar;
private float max;
private float current;
public HealthBar(Color bgColor, Color barColor) {
Pixmap bgPixmap = new Pixmap(1, 1, Pixmap.Format.RGB565);
bgPixmap.setColor(bgColor);
bgPixmap.drawPixel(0, 0);
background = new Texture(bgPixmap);
bgPixmap.dispose();
Pixmap barPixmap = new Pixmap(1, 1, Pixmap.Format.RGB565);
barPixmap.setColor(barColor);
barPixmap.drawPixel(0, 0);
bar = new Texture(barPixmap);
barPixmap.dispose();
}
@Override
public void draw(Batch batch, float parentAlpha) {
batch.draw(background, getX(), getY(), getWidth(), getHeight());
batch.draw(bar, getX(), getY(), getBarEnd(), getHeight());
}
private float getBarEnd() {
return current/max * getWidth();
}
public void setHealth(float current, float max) {
this.current = current;
this.max = max;
}
public void dispose(){
background.dispose();
bar.dispose();
}
}グループステージ2dに約30本のレンダリング
I'am。
このレンダリングでは、毎秒約20フレームのコストがかかります。同じ数のシンプルなラベルをレンダリングすると、パフォーマンスに目に見える影響はありません。私はこのコードで何かを見逃していますか?これらのアクターは、Stageを使用してレンダリングされるグループに追加されます。 performance with draw() content commented
ありがとうございました!バッチはflush()メソッドを呼び出すときにだけフラッシュされます。それはローエンドのAndroidデバイスでテストされました。 Nvidia Shieldのタブレットゲームでは、その電話機に20〜30fpsの安定した60fpsを保持します。 –