【LWJGL3】ウィンドウの作成 #1

Java

適当に初期クラスのMainクラスとウィンドウの処理を書くためのWindowクラスをつくっておきます。

  • Windowクラス
package ml.pkom.lwjgl.tutorial;

import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWVidMode;
import static org.lwjgl.system.MemoryUtil.*;

public class Window {

    public long window;

    // ウィンドウの横幅
    public int width = 640;

    // ウィンドウの縦幅
    public int height = 360;

    // ウィンドウのタイトル名
    public String title = "HogeHoge";

    public void init() {
        // GLFWの初期化
        GLFW.glfwInit();

        // ウィンドウを作成
        window = GLFW.glfwCreateWindow(width, height, title, NULL, NULL);

        // ウィンドウが見えるように設定
        GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE);

        // リサイズをできるように設定
        GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, GLFW.GLFW_TRUE);

        // ビデオモードの取得
        GLFWVidMode videoMode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());

        // 画面のサイズを取得
        int screenWidth = videoMode.width();
        int screenHeight = videoMode.height();

        // ウィンドウの位置を中央へセットする
        GLFW.glfwSetWindowPos(window, (screenWidth - width) / 2, (screenHeight - height) / 2);

        // ウィンドウを表示
        GLFW.glfwShowWindow(window);
    }

    // 閉じるボタンが押されるとtrueを返す
    public boolean isClosed() {
        return GLFW.glfwWindowShouldClose(window);
    }

    public void update() {
        // マウスなど入力されたイベントを記録する
        GLFW.glfwPollEvents();
    }

    public void swapBuffers() {
        // カラーバッファ(色表示)を入れ替える
        GLFW.glfwSwapBuffers(window);
    }
}
  • Mainクラス
package ml.pkom.lwjgl.tutorial;

public class Main {
    public static void main(String[] args) {
        Window window = new Window();

        // ウィンドウの初期化
        window.init();

        // 閉じるまでループ
        while (!window.isClosed()) {
            // イベントの更新
            window.update();
            
            // バッファの更新
            window.swapBuffers();
        }
    }
}

実行してみるとウィンドウが表示されました。

タイトルとURLをコピーしました