@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.
Considerare l'utilizzo di un intervallo temporale fisso e rendere il gioco framerate indipendente: http://gafferongames.com/game-physics/fix-your-timestep/ –
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
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