ava 3DGame LWJGL GitBook chapter2-4〜LWJGLを学習する2-4〜

イントロダクション

LWJGL GitBookChapterを写経しながら理解していきます。Git(ソース)はこちら。。。

前回は、Chapter2(3)をやりました。でもまだ半分くらいしか見ていなかったので続きを記載いたします。

Introduction

LWJGL We will understand GitBook ‘s chapter while shooting. Git (source) is here. . . Last time I did Chapter 2,(3) so I will do Chapter 2 this time.

https://ahbejarano.gitbook.io/lwjglgamedev/chapter2

コードを読む(Read the Code)

  1. DummyGame
  2. Renderer
  3. GameEngine
  4. IGameLogic
  5. Timer  This time
  6. Window This time

前回は、3, 5のクラスについて見ました。インターフェースがあるのでその部分について触れています。次は4, 6, 7のクラスについて見ていきます。

********************


********************

Windowクラスについて

GameEngineクラスのコンストラクタでインスタンスを作成(コンストラクタが呼ばれて)されています。

    public GameEngine(String windowTitle, int width, int height, boolean vSync, IGameLogic gameLogic) throws Exception {
        gameLoopThread = new Thread(this, "GAME_LOOP_THREAD");
        window = new Window(windowTitle, width, height, vSync);
        this.gameLogic = gameLogic;
        timer = new Timer();
    }

Windowクラスは引数の値をフィールドで保持しています。

そしてinit()ではChapter1で見たような処理を行なっています。なので説明は割愛します。

Timerクラスについて

このクラスは、時間の管理を行うクラスです。

public class Timer {

    private double lastLoopTime;
    
    public void init() {
        lastLoopTime = getTime();
    }

    public double getTime() {
        return System.nanoTime() / 1000_000_000.0;
    }

    public float getElapsedTime() {
        double time = getTime();
        float elapsedTime = (float) (time - lastLoopTime);
        lastLoopTime = time;
        return elapsedTime;
    }

    public double getLastLoopTime() {
        return lastLoopTime;
    }
}

上のソースの赤字の部分は数値を示しています"_"(アンダースコア)がありますが可読性を上げるためのものなので値としては「>1000_000_000.0<」=「1000000000.0」です。参考:ORACLEのドキュメント

全体的にどんな動き?

これに関しては、ソースの細かいところを自分なりにまとめるのが良いと思いますので、割愛します(笑)

次回はChapter3をやります。

*********************************


*********************************