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

Miałem problem i stworzyłem nowy projekt. Problem libgdx próbuje utrzymać 60FPS, a deltatime avastage ~ 16ms.Niektóre rendery zajmują + 20ms, a następne renderowanie zajmuje 12ms (render1 + render2 = 32ms), aby osiągnąć 60FPS. To sprawia, że ​​gra jest opóźniona. Jak widać, nie mam niczego w projekcie i jest to samo w programie typu desktop. Jak to rozwiązałeś?Laggy pusty projekt na 60FPS

Uwaga: Próbowałem również ponownego renderowania. Ale to samo, jeśli renderowanie zajmuje więcej czasu niż średnia. Próbowałem też trochę poczekać na render, jeśli jest to mniej niż 16 ms. To też nie pomogło. Nie ma problemu z GC. Używam Libgdx 1.6.4.

+1

Należy rozważyć użycie ustalonego przedziału czasu i tym samym niezależność od liczby gier: http://gafferongames.com/game-physics/fix-your-timestep/ –

+0

Powyższy kod jest niezależny od liczby klatek na sekundę. Ustalony czas dotyczy powtarzalnej symulacji fizyki i faktycznie wprowadza jąkanie, chyba że jest połączone z interpolacją. Co do oryginalnego pytania, nie widzę żadnych problemów z tym, co robisz. Czy widzisz nierówną liczbę klatek na sekundę? Spróbuj użyć 'Gdx.graphics.getRawDeltaTime()' i sprawdź, czy to wygląda inaczej. Wygląda na to, że dostajesz skoki wydajności, ale to by było niezwykłe w przypadku tak podstawowego programu. – Tenfour04

+0

Użyłem rawDeltaTime, ale to nie pomogło. Ten duszek jest niestabilny przez 2 lub 3 sekundy na każde ~ 5 sekund. Czy używasz wersji 1.6.4? – Redugsix

Odpowiedz

1

Nie zalogować wyjście w pętli renderowania

Usuń linię Gdx.app.log("delta",Gdx.graphics.getDeltaTime()+""); jak to pisze wyjście do dziennika, który spowalnia renderowania pętli dramatycznie.