Я пытаюсь написать геймплей для моего собственного 2d игрового движка.Моя проблема в том, что мне нужно правильное время дельты или значение для интерполяции кадров (значение от 0 до 1 - насколько далеко следующее обновление), потому что моя игра работает с 30 обновлениями и fintetes (без заглавных букв) fps.
Я пробовал много игровых циклов, но ничего не имеет интерполяции кадров.Мне нужно это значение, потому что я обновляюсь с 30 обновлениями, поэтому оно очень запаздывает, когда я его рендеринг.
public void gameLoop(GameContainer container, ApplicationConfiguration config, SettingsConfiguration settingsConfig) {
this.initDisplay(container, config, settingsConfig);
this.init();
this.printInfos();
window.initGL();
long lastTime = System.nanoTime();
float delta = 0.0F;
double ns = 1000000000.0D / this.UPDATE_CAP;
long timer = System.currentTimeMillis();
int frames = 0;
int updates = 0;
while(this.running) {
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
if(delta >= 1.0F) {
this.input(delta);
this.update(delta);
updates++;
delta--;
}
this.render(delta);
frames++;
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
System.out.println("FPS: " + frames + " | Updates: " + updates);
debugFPS = frames;
debugUpdates = updates;
updates = 0;
frames = 0;
}
if(window.shouldClose()) {
this.shutdown();
}
}
window.destroy();
}
Метод initDisplay инициализирует окно с GLFW.Затем я инициализирую ресурсы и после этого печатаю некоторую информацию об игре.
window.initGL ();вызывать методы GL11, такие как projection и clearColor