2015-08-05 7 views
5
@Override 
public void create() { 
batch = new SpriteBatch(); 
img = new Texture("badlogic.jpg"); 
} 

@Override 
public void render() { 
Gdx.gl.glClearColor(0, 0, 0, 1); 
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
if (x < 0 || x > 400) { 
    speed = -speed; 
} 
x += speed * Gdx.graphics.getDeltaTime() * 60; 
Gdx.app.log("delta",Gdx.graphics.getDeltaTime()+""); 

batch.begin(); 
batch.draw(img, x, 0); 
batch.end(); 
} 

Ich hatte ein Problem, und ich habe ein neues Projekt erstellt. Das Problem libgdx versucht 60FPS zu halten und die durchschnittliche Zeit beträgt ~ 16ms. Einige Renderer benötigen + 20ms, dann dauert das Rendering 12ms (render1 + render2 = 32ms) um 60FPS zu erreichen. Das macht das Spiel lückig. Wie Sie sehen können, habe ich nichts in dem Projekt und es ist das gleiche in Desktoplaunch. Wie hast du das gelöst?Laggy leeres Projekt bei 60FPS

Hinweis: Ich habe auch reqeustRendering versucht. Aber es ist dasselbe, wenn der Rendervorgang mehr Zeit benötigt als der Durchschnitt. Ich habe auch versucht, einige Zeit auf den Render zu warten, wenn das weniger als 16ms ist. Es hat auch nicht geholfen. Es hat kein GC-Problem. Ich benutze Libgdx 1.6.4.

+1

Verwenden Sie einen festen Zeitschritt und machen Sie das Spiel Framerate unabhängig: http://gafferongames.com/game-physics/fix-your-timestep/ –

+0

Der obige Code ist unabhängig von der Bildrate. Ein fester Zeitschritt ist für eine wiederholbare Physiksimulation und würde Stottern tatsächlich einführen, wenn es nicht mit Interpolation kombiniert wird. In Bezug auf die ursprüngliche Frage sehe ich keine Probleme mit dem, was Sie tun. Sehen Sie eine ungleiche Bildrate? Versuchen Sie es mit 'Gdx.graphics.getRawDeltaTime()' und sehen Sie, ob das anders aussieht. Klingt so, als würden Sie Performance-Spikes bekommen, aber das wäre für so ein einfaches Programm ungewöhnlich. – Tenfour04

+0

Ich habe rawDeltaTime verwendet, aber es hat nicht geholfen. Dieses Sprite ruckelt alle 5 Sekunden für 2 oder 3 Sekunden. Verwenden Sie die Version 1.6.4? – Redugsix

Antwort

1

Sie Protokollausgabe nicht in der Schleife machen

Entfernen Sie die Zeile Gdx.app.log("delta",Gdx.graphics.getDeltaTime()+""); als diese Ausgabe in das Protokoll schreibt, die Sie Ihre Schleife dramatisch verlangsamt machen.

Verwandte Themen