从零开始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

欢迎大家关注我的公众号【OpenGL编程】,定期分享OpenGL相关的3D编程教程、算法、小项目。欢迎大家一起交流。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值