2015-08-05 14 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(); 
} 

Ho avuto un problema e ho creato un nuovo progetto. Il problema che libgdx prova a mantenere 60FPS e avarage deltatime è ~ 16ms. Alcuni render prendono + 20ms, quindi il successivo rendering richiede 12ms (render1 + render2 = 32ms) per raggiungere 60FPS. Questo rende la partita lenta. Come puoi vedere, non ho nulla nel progetto ed è lo stesso in desktoplaunch. Come hai risolto questo?Laggy progetto vuoto a 60FPS

Nota: ho anche provato reqeustRendering. Ma è la stessa cosa se il rendering richiede più tempo della media. Ho anche provato ad aspettare un po 'di tempo per il rendering se questo è inferiore a 16 ms. Non è stato d'aiuto neanche. Non ha alcun problema di GC. Io uso Libgdx 1.6.4.

+1

Considerare l'utilizzo di un intervallo temporale fisso e rendere il gioco framerate indipendente: http://gafferongames.com/game-physics/fix-your-timestep/ –

+0

Il codice sopra riportato è indipendente dal frame rate. Un timestep fisso è per una simulazione fisica ripetibile e introdurrebbe effettivamente la balbuzie a meno che non sia combinato con l'interpolazione. Riguardo alla domanda originale, non vedo alcun problema con quello che stai facendo. Stai vedendo un frame rate irregolare? Prova a usare 'Gdx.graphics.getRawDeltaTime()' e vedi se sembra diverso. Sembra che tu stia ottenendo picchi di prestazioni, ma sarebbe insolito per un programma di questo tipo. – Tenfour04

+0

Ho usato rawDeltaTime ma non è stato d'aiuto. Quello sprite è a scatti per 2 o 3 secondi per ogni ~ 5 secondi. Usi la versione 1.6.4? – Redugsix

risposta

1

non accedere di uscita nel render ciclo

Rimuovere la riga Gdx.app.log("delta",Gdx.graphics.getDeltaTime()+""); come questo scrive l'output nel log, che rallenta il rendering in modo drammatico loop.

Problemi correlati