Tôi đã đọc rằng tốc độ của các đối tượng trò chơi không nên bị cản trở bởi FPS mà thay vào đó nên dựa trên thời gian. Làm cách nào tôi có thể tách riêng mã cập nhật / vẽ để tối đa hóa hiệu suất mà không giới hạn tốc độ vẽ và cung cấp tốc độ cập nhật logic không đổi dựa trên thời gian?
Mã giả hiện tại của tôi là như sau
loop
{
draw();
if (ticksElapsed() > 100)
{
update();
ticks+= ticksElapsed();
}
}
Vấn đề là mã bản vẽ cản trở hiệu suất của tốc độ update (). Và nó tiêu thụ 100% cpu vì nếu giấc ngủ bị ném vào, nó sẽ loại bỏ cả chức năng vẽ / logic.
Tôi cũng đang sử dụng SDL và dường như không có tùy chọn vsync. Tôi cũng đã nghe nói về các thuật ngữ cố định và bước thời gian thay đổi tuy nhiên tôi không chắc làm thế nào có thể được thực hiện với giấc ngủ ()