当前位置: 首页 > news >正文

java游戏开发包_LWJGL

软件简介

LWJGL(Lightweight Java Game

Library)它可以帮助Java程序员开发有着商业性质的游戏.LWJGL为开发者提供简单易用的API来访问OpenGL (Open Graphics

Library)与OpenAL (Open Audio Library) 同也提供操作控制器(Gamepads, Steering

wheel和操纵杆)的API.

示例代码:

import org.lwjgl.Sys;

import org.lwjgl.opengl.*;

import org.lwjgl.system.glfw.*;

import java.nio.ByteBuffer;

import static org.lwjgl.opengl.GL11.*;

import static org.lwjgl.system.MemoryUtil.*;

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

public class HelloWorld {

private long window;

public void execute() {

System.out.println("Hello LWJGL " + Sys.getVersion() + "!");

try {

init();

loop();

glfwDestroyWindow(window);

} finally {

glfwTerminate();

}

}

private void init() {

glfwSetErrorCallback(ErrorCallback.Util.getDefault());

if ( glfwInit() != GL11.GL_TRUE )

throw new IllegalStateException("Unable to initialize GLFW");

glfwDefaultWindowHints();

glfwWindowHint(GLFW_VISIBLE, GL_FALSE);

glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);

int WIDTH = 300;

int HEIGHT = 300;

window = glfwCreateWindow(WIDTH, HEIGHT, "Hello World!", NULL, NULL);

if ( window == NULL )

throw new RuntimeException("Failed to create the GLFW window");

WindowCallback.set(window, new WindowCallbackAdapter() {

@Override

public void key(long window, int key, int scancode, int action, int mods) {

if ( key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE )

glfwSetWindowShouldClose(window, GL_TRUE);

}

});

ByteBuffer vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());

glfwSetWindowPos(

window,

(GLFWvidmode.width(vidmode) - WIDTH) / 2,

(GLFWvidmode.height(vidmode) - HEIGHT) / 2

);

glfwMakeContextCurrent(window);

glfwSwapInterval(1);

glfwShowWindow(window);

}

private void loop() {

GLContext.createFromCurrent();

glClearColor(1.0f, 0.0f, 0.0f, 0.0f);

while ( glfwWindowShouldClose(window) == GL_FALSE ) {

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glfwSwapBuffers(window);

glfwPollEvents();

}

}

public static void main(String[] args) {

new HelloWorld().execute();

}

}

相关文章:

  • java的人patch方法_java – 如何在CXF中使用PATCH方法
  • java func_Java通过匿名类来实现回调函数实例总结
  • Java关系表达式x y_Java正则逻辑运算符[X|Y]匹配
  • java将五元换成1元5角_C,一个代码来获得一笔钱转换成四分之一,硬币,镍币,便士[关闭]...
  • java 对方 GBK 乱码_【转】Java编码与乱码---GBK与UTF-8之间的转换
  • mySQL表变量和临时表的区别_SQL Server表变量和临时表的区别
  • 将java类的包注册到map中_java hashmap对象当实参是出现”java:11: 错误: 无法将类 Role中的构造器 Role应用到给定类型;”?...
  • JAVA不是主方法怎么输出_java主方法如何调用非静态方法
  • php显示缩小的图片代码,php等比例缩放图片及剪切图片代码分享
  • php代码转换工具,推荐几款格式化工具以及代码转换工具
  • img标签 中的php图片大小,html中关于img标签以及改变图片尺寸的详解(图)
  • php csv 源码 下载,[PHP] 使用php生成下载csv文件
  • java 去掉 u00a0,UTF-8编码中的特殊空格之C2 A0 - NO-BREAK SPACE
  • java里函数式表达式,Java8 Lambda表达式 和 函数式编程 原理详解
  • 易语言与php加密AES,易语言调用openssl库实现aes cbc/cfb 256加密
  • #Java异常处理
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • ERLANG 网工修炼笔记 ---- UDP
  • JAVA之继承和多态
  • MaxCompute访问TableStore(OTS) 数据
  • Median of Two Sorted Arrays
  • MySQL数据库运维之数据恢复
  • scrapy学习之路4(itemloder的使用)
  • Vue2.0 实现互斥
  • 利用jquery编写加法运算验证码
  • 物联网链路协议
  • 新书推荐|Windows黑客编程技术详解
  • 栈实现走出迷宫(C++)
  • python最赚钱的4个方向,你最心动的是哪个?
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #1015 : KMP算法
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ${factoryList }后面有空格不影响
  • (+4)2.2UML建模图
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (三)c52学习之旅-点亮LED灯
  • (未解决)macOS matplotlib 中文是方框
  • ****Linux下Mysql的安装和配置
  • ./configure,make,make install的作用(转)
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 中viewstate的原理和使用
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @Responsebody与@RequestBody
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [20150904]exp slow.txt
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [ActionScript][AS3]小小笔记
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [C++]二叉搜索树