自制Java游戏引擎[LWJGL](2)-第一个窗口

接下来开始创建第一个窗口。

先看效果:

其实也没啥好看的,就是一个黑乎乎的窗口。

主要函数包括三个:

createDispaly();
updateDisplay();
closeDisplay();

很简单是不是,其中LWJGL库帮我们封装了大部分的窗口创建功能,我们只需要调用相应的窗口创建函数即可。

新建DisplayManager类:

package renderEngine;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.ContextAttribs;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.PixelFormat;

public class DisplayManager {
    public static final int WIDTH = 1280;
    public static final int HEIGHT = 720;
    public static final int FPS_CAP = 120;

    public static void createDisplay() {

        ContextAttribs attribs = new ContextAttribs(3, 2);
        attribs.withProfileCompatibility(true);
        attribs.withProfileCore(true);

        try {
            Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
            Display.create(new PixelFormat(), attribs);
            Display.setTitle("MyGameEngine");
        } catch (LWJGLException e) {
            e.printStackTrace();
        }

        GL11.glViewport(0, 0, WIDTH, HEIGHT);
    }


    public static void updateDisplay() {
        Display.sync(FPS_CAP);  // 帧率同步最大值:120
        Display.update();
    }


    public static void closeDisplay() {
        Display.destroy();
    }
}

添加测试函数:

package engineTester;

import org.lwjgl.opengl.Display;

import renderEngine.DisplayManager;

public class MainGameLoop {

    public static void main(String[] args) {

        DisplayManager.createDisplay();

        while(!Display.isCloseRequested()){

            // game logic

            // render   

            DisplayManager.updateDisplay();
        }

        DisplayManager.closeDisplay();

    }
}

测试函数中也是主要做了三件事:

  1. 创建窗口

  2. 更新窗口(包括:处理游戏逻辑,渲染,检测窗口关闭消息)

  3. 关闭窗口

ok,该节结束。

源码下载

下篇预告:VAO和VBO

猜你喜欢

转载自blog.csdn.net/birdflyto206/article/details/81233289