2D GameEngine Gameloop - визуализация интерполяции / частичные тики - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь написать геймплей для моего собственного 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

...