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

Tôi gặp sự cố và tôi đã tạo một dự án mới. Các vấn đề libgdx cố gắng giữ 60FPS và delaratime avarage là ~ 16ms.Một số render mất + 20ms sau đó render tiếp theo mất 12ms (render1 + render2 = 32ms) để đạt được 60FPS. Điều đó làm cho trò chơi bị lag. Như bạn có thể thấy tôi không có bất cứ điều gì trong dự án và nó là như nhau trong desktoplaunch. Làm thế nào bạn giải quyết được điều này?Dự án trống rỗng tại 60FPS

Lưu ý: Tôi cũng đã thử reqeustRendering. Nhưng đó cũng là điều tương tự nếu kết xuất mất nhiều thời gian hơn mức trung bình. Tôi cũng đã cố gắng chờ một thời gian để render nếu nó nhỏ hơn 16ms. Nó cũng không giúp được gì. Nó không có bất kỳ vấn đề GC nào. Tôi sử dụng Libgdx 1.6.4.

+1

Cân nhắc sử dụng một bước thời gian cố định và do đó làm cho tốc độ khung hình trò chơi độc lập: http://gafferongames.com/game-physics/fix-your-timestep/ –

+0

Mã ở trên là tỷ lệ khung hình độc lập. Một timestep cố định là cho một mô phỏng vật lý lặp lại và sẽ thực sự giới thiệu nói lắp trừ khi nó được kết hợp với nội suy. Về câu hỏi ban đầu, tôi không thấy bất kỳ vấn đề gì với những gì bạn đang làm. Bạn có thấy tốc độ khung hình không đồng đều không? Hãy thử sử dụng 'Gdx.graphics.getRawDeltaTime()' và xem nó có khác không. Có vẻ như bạn đang nhận được hiệu suất đột biến, nhưng điều đó sẽ không bình thường đối với một chương trình cơ bản như vậy. – Tenfour04

+0

Tôi đã sử dụng rawDeltaTime nhưng không hiệu quả. Đó là sprite là jerky cho 2 hoặc 3 giây cho mỗi ~ 5 giây. Bạn có sử dụng phiên bản 1.6.4 không? – Redugsix

Trả lời

1

Đừng đăng nhập đầu ra trong render loop

Tháo dòng Gdx.app.log("delta",Gdx.graphics.getDeltaTime()+""); như thế này viết ra để các bản ghi, mà làm chậm của bạn render vòng lặp đáng kể.

Các vấn đề liên quan