Я пытаюсь написать свой собственный игровой цикл. Но использование процессора слишком велико. Это около 25%. Моя проблема может быть в том, что нет Thread.sleep. Но я не хочу использовать это, он должен быть не очень точным. Также для вычисления следующего кадра понадобится 10 мс.Java: игровой цикл - загрузка процессора слишком высока
Мой код делает это:
1: перекрашивать окно («Fenster» это окно на немецком языке)
2: зачитать миллисекунды
3: установить следующий кадр
Я хочу иметь 50 кадров в секунду , Таким образом, программе нужно ждать 1000/50 = 20 мс каждый кадр.
4: Вычислить разность времени и после создания следующего кадра
// GameSchleife
while (true) {
// First repaint
fenster.repaint();
// Before calculating the next frame, capture the time
long a = System.currentTimeMillis();
long b = a;
// Calculate the next frame
fenster.Update();
// Wait for 20 ms (50 frames in a second)
for (int time = 0; time < 20;) {
// Wait for at least 1 ms
while (a == b) {
a = System.currentTimeMillis();
}
// Difference from a and b
time = time + ((int) (a - b));
//
a = System.currentTimeMillis();
b = a;
}
}
Так каково ваше вопрос? –