LWJGL教程--- 1.The Display

声明: 本博客文章原创均为个人原创 , 翻译类文章均为个人业余时间翻译,版权所有。转载请注明出处:http://www.wjfxgame.com,另外本人的优快云博客:http://blog.youkuaiyun.com/ml3947


LWJGL,大家应该都听说过。这是Java界两大对OpenGL绑定的Java库之一。另外一个就是大名鼎鼎的JOGL了,以前曾是被SUN所支持的“官方”的OpenGL绑定库。


虽然本人目前工作转移到Unity3D,而使用Unity3D确实是很方便。但是,它毕竟是一个商业性质的引擎,很多方面不尽人意,无法满足自己的需求。而且由于封装度比较高,也不利于自己的学习。而由于本人从大学以来,使用Java居多,最近又在玩大名鼎鼎的Minecraft(使用LWJGL开发),所以决定使用LWJGL来看看。


LWJGL库使用了它自己的轻量级本地窗口,而且也有它自己的输入系统。音效使用的Java对OpenAL的绑定库。同时也提供对操作控制器等的API。


在LWJGL中,Display是一个很重要的类。它用来创建和控制渲染所有图形元素的本地窗口。在Display中,有三个方法需要被注意。

  1. create()
  2. update()
  3. destroy()
Display.create()这个方法用来创建本地窗口。我们需要设置它的DisplayMode,用来指定显示窗口的大小。DisplayMode需要在create之前设置。类似如下:
Display.setDisplayMode(new DisplayMode(width,height));
Display.create();

LWJGL使用双缓冲,任何图形都将被绘制到屏幕外的缓存里。当调用Display.update()的时候,将会交换缓存,然后让图形显示在窗口中。通常这个方法在渲染的循环中,每一帧的时候调用。

当LWJGL销毁的时候,将会调用Display.destroy()方法来进行清理和释放资源。

另外,当我们点击关闭本地窗口的按钮的时候,Display.isCloseRequested()方法将会返回true,所以我们通常将它使用在渲染循环中,如下所示:
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class DisplayExample {
	public void start() {
		try {
			Display.setDisplayMode(new DisplayMode(800,600));
			Display.create();
		} catch (LWJGLException e) {
			e.printStackTrace();
			System.exit(0);
		}
		
		// init OpenGL here
		
		while (!Display.isCloseRequested()) {
			
			// render OpenGL here
			
			Display.update();
		}
		
		Display.destroy();
	}
	
	public static void main(String[] argv) {
		DisplayExample displayExample = new DisplayExample();
		displayExample.start();
	}
}

运行将会显示一个800 x 600 的窗口。

转载请注明出处:http://blog.youkuaiyun.com/ml3947。

【LWJGL教程】 二、 开始 二、 开始 这一节我们要创建一个游戏的模板。首先我们需要知道游戏的基本算法,如下图所示 Created with Raphaël 2.2.0开始游戏初始化游戏游戏正在运行更新游戏渲染游戏结束游戏yesno 创建一个包,名称任意。在下面再创建一个main包 在main包下创建Main类并实现Runnable接口, 并添加main方法 package main; public class Main implements Runnable { } 创建void类型方法start开始, run运行, 阅读详情

相关推荐

LWJGL教程(1)——介绍和安装

LWJGL(Lightweight Java Game Library)作为Java游戏开发的核心库,其频繁使用缓冲区(Buffer)的设计源于多方面的技术需求,本质上是Java与本地硬件(尤其是GPU)高效协作的必然选择。(而非Java数组)是LWJGL高性能渲染的最佳实践。),但涉及核心渲染流程(如VBO、纹理传输)时,缓冲区仍是不可替代的解决方案。可将 LWJGL 的 3D 渲染窗口嵌入 JavaFX 面板(通过。),用 JavaFX 包裹游戏界面(如 HUD 控件)。:调用OpenGL的。

qq_24992377的博客 2019

LWJGL入门指南:序章(我的世界(Minecraft)java原版同款游戏库)

LWJGL简介 LW JGL是一个Java库,它支持跨平台访问流行的本机API,这些API在图形(OpenGL,Vulkan),音频(OpenAL)和并行计算(OpenCL)应用程序的开发中很有用。这种访问是直接的,高性能的,而且还包装在适用于Java生态系统的类型安全和用户友好的层中。 LW JGL是一种启用技术,并提供低级别访问。它不是框架,并且不提供比本机库公开的功能更高的实用程序。因此,鼓励新手程序员在直接使用库之前尝试使用LWJGL的框架或游戏引擎之一。 LW JGL是开源软件,可免费获得。 L

eguid音视频方向博客,分享经过实践检验的硬核音视频技术。FFmpeg、openCV和JavaCV音视频和图像处理系列教程发布十周年,众多开发者的严格验证。欢迎关注,一起交流探索学习最新音视频和图像处理技术 8468

3D Gaussian Splatting:用于实时的辐射场渲染

3D Gaussian Splatting:用于实时的辐射场渲染 3d gaussian splatting for real-time radiance field rendering

m0_51976564的博客 1万+

LWJGL入门指南:第一行LWJGL代码,如何安装LWJGL或生成maven或gradle依赖

LWJGL系列文章 LWJGL入门指南:序章 LWJGL入门指南:安装LWJGL或生成maven或gradle依赖与第一行LWJGL代码 前言 上一章大体了解了lwjgl的结构,lwjgl集成了多个底层图形库和系统api库,本身并不提供上层抽象,我们在使用的时候只需要选择自己需要使用的库,并按照对应库的api进行开发即可。 模块依赖 如何配置依赖,lwjgl提供了依赖项生成工具,方便选择所需的依赖库和版本等配置。 lwjgl提供的依赖及项目生成工具 https://www.lwjgl.org/cu

eguid音视频方向博客,分享经过实践检验的硬核音视频技术。FFmpeg、openCV和JavaCV音视频和图像处理系列教程发布十周年,众多开发者的严格验证。欢迎关注,一起交流探索学习最新音视频和图像处理技术 5663

阿里云大模型 ACP 认证教材内容突变?这些改动藏着通关密码,不看亏大!

【摘要】核心章节大换血,安全合规融入实战场景,大模型微调用数学深度解析,部署章节带来阿里云产品对比实战攻略,甚至整章内容被替换成藏满学习彩蛋的行业趋势指南。这些改动不仅重塑考试重点,更暗藏官方命题风向——安全合规考场景方案,微调原理考几何解析,部署设计考分析框架。无论你是数学小白还是部署新手,这篇攻略都将带你吃透变动逻辑,附赠急救包和考点清单,帮你抓住这些“隐形加分项”,速来解锁通关秘籍!

davidkorhenn的博客 1755

SpringBoot 整合 Drools:从环境搭建到复杂业务落地,精通规则引擎实战指南

本文介绍了Drools规则引擎的基础概念及其与SpringBoot的整合方法。首先概述了规则引擎的核心价值,包括业务规则解耦、可维护性提升等。重点讲解了Drools的核心组件(规则、事实、会话等)及其工作原理。随后详细说明了在SpringBoot项目中集成Drools的步骤,包括添加依赖、配置自动加载规则文件、创建KieContainer等关键配置类。文章还提供了完整的DRL规则文件示例和SpringBoot集成配置代码,为开发人员提供了从理论到实践的完整指导。通过这种方式,可以轻松实现业务规则与系统代码的

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1433

【LWJGL2 WIKI】【基础篇】基础1:显示

原文:http://wiki.lwjgl.org/wiki/LWJGL_Basics_1_%28The_Display%29Introduction 介绍LWJGL库使用自带的轻量级本地窗口(即所谓的Display)并有自己的输入系统。提供快速少量的内容描画,低延迟输入,为现代游戏开发提供一个稳定的基础。The LWJGL DisplayDisplay类是LWJGL最重要的类,它创建并控制本地窗口,

杂碎的杂乱的杂物间 3010

【OpenCV-Python】——图像处理基础&读写及显示图像&读写及播放视频&灰度图/彩色图/图像通道操作、运算

在Python中,OpenCV使用NumPy数组存储图像,Numpy是使用Python进行数组计算的软件包,提供强大的N维数组对象,支持复杂的广播功能(数组运算),集成了C/C++和Fortran代码工具,支持线性代数、傅里叶变换和随机数等特性,还可作为通用数据的高效多维容器,如在OpenCV中显示图像。Numpy的知识点见数据处理专栏,主要包括数据类型、创建数组、数组形状、索引切片和迭代、数组运算等。作为初学者,里面可能有总结不全,后续深入学习后会改善文章!下次学习图形用户界面!

weixin_51658186的博客 2084

LWJGL显示一 显示

LWJGL基础1(显示) 介绍 LWJGL库使用它自己的轻量级本地窗口(显示),并有其自己的输入系统。 这提供了一种创建快速,小范围内,可借鉴,可实现低延迟的输入现代游戏的一个坚实的基础。 LWJGL显示 类 Display 是 LWJGL中最重要的一个类。 它创建和控制本地窗口上呈现所有图形内容。 显示Display 类有3种方法是应该知道的,即: create(

Mynoob的专栏 1492

使用Simulink进行基于IIR滤波器的设计与稳定性分析仿真

IIR滤波器的稳定性与其系统函数的极点位置密切相关。如果所有极点都位于Z平面的单位圆内,则该滤波器是稳定的;否则,滤波器将是不稳定的。在设计IIR滤波器时,确保其稳定性对于避免输出信号发散至关重要。明确你的系统需求,比如输入信号类型(如正弦波)、采样率、IIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通IIR滤波器,用来去除高于500Hz的所有频率成分,保留低于500Hz的信号成分。采样率为8kHz。

xiaoheshang_123的博客 150

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7925

【LWJGL2 WIKI】【基础篇】基础5:全屏

原文:http://wiki.lwjgl.org/wiki/LWJGL_Basics_5_%28Fullscreen%29Why use Fullscreen? 为何用全屏?有许多原因,包括以下: 改变屏幕分辨率会得到更快的游戏运行速度,使图片看起来效果更佳 使垂直同步可以自由分割图形(??不知道什么意思) 使用户更有沉浸感 Using Fullscreen 使用全屏创建教程1里的Display窗口

杂碎的杂乱的杂物间 2802

整流桥选型参数,结构原理,工艺与注意问题总结

整流桥(Rectifier Bridge)是一种电子元件,它的主要作用是将交流电(AC)转换为直流电(DC)。这种转换在许多电子设备中都是必要的,因为大多数电子元件和电路都需要直流电源来工作。本文对整流桥的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 2186

【LWJGL2 WIKI】【基础篇】基础4:计时

原文:http://wiki.lwjgl.org/wiki/LWJGL_Basics_4_(Timing)Timers 计时器精确计时对于高性能游戏很重要。一般计时器的精度至少得是1毫秒。 Java的System.currentTimeMillis()方法可以根据运行的操作系统具备1至55毫秒之间某个精度,这将导致游戏跨平台不太容易。System.nanoTime()Java 1.5引入了此方法,

杂碎的杂乱的杂物间 1382

《Python Web项目集锦》-专栏介绍和目录

本专栏专注于Python Web项目,涉及内容包含FastAPI、Django、Flask等,所有项目代码完整且可直接运行。不管是零基础还是有经验的开发,相信都能从本专栏获益。有任何问题欢迎私聊博主,专栏持续更新中...

数据知道的博客 5214

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

通过lwjgl获得显示设备当前分辨率、可支持分辨率列表

利用lwjgl获得当前屏幕设备可支持分辨率列表根据版本不同方法也有很大的变化 lwjgl-2.X.X 在lwjgl-2.X.X版本中Display与DisplayMode可被用来获得当前屏幕设备可支持分辨率列表 import org.junit.Test; import org.lwjgl.LWJGLException; import org.lwjgl.opengl.Display...

御前四品铲屎官的博客 561

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【LWJGL2 WIKI】【现代OpenGL篇】版本选择

原文:http://wiki.lwjgl.org/wiki/Version_selectionIntroduction 介绍OpenGL有许多版本可以用。写教程的时候,最新版是4.2,开发期间决定逐渐弃用传统OpenGL(1.X和2.X版),因为它们依赖于固定管线。新版使用的是可编程管线,性能更好,对目前和未来的GPU来说,向前兼容性更好。 如果你刚开始接触OpenGL,最好就学3.X或4.X版本

杂碎的杂乱的杂物间 2175

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java 纹理_Java openGL绘制纹理

我试图在LWJGL中绘制一个基本的纹理,但是我不能。我的主课:package worldofportals;import java.io.IOException;import java.util.logging.FileHandler;import java.util.logging.Level;import java.util.logging.Logger;import org.lwjgl.LW...

weixin_29292535的博客 468

ManyMC:为M1/M2 Mac用户量身打造的终极Minecraft原生启动器解决方案

对于拥有Apple Silicon芯片(M1/M2)的Mac用户来说,流畅运行Minecraft曾经是一个技术难题。传统启动器依赖Rosetta 2模拟x86架构,导致性能损失、发热严重和游戏卡顿。ManyMC启动器应运而生,通过深度优化的原生ARM64支持,为Minecraft玩家提供了完美的macOS游戏体验。本文将深入解析ManyMC的技术架构、安装配置和高级优化技巧,帮助您充分利用Appl

gitblog_00858的博客 484

ManyMC:为Apple Silicon Mac用户打造的原生Minecraft启动器终极方案

在Apple Silicon芯片(M1/M2)的Mac上运行Minecraft一直是一个技术挑战。传统的x86架构启动器需要通过Rosetta 2进行转译,导致性能损失和兼容性问题。ManyMC启动器应运而生,通过深度优化实现了对macOS arm64架构的原生支持,为Apple Silicon用户提供了流畅的Minecraft游戏体验。 ## Apple Silicon架构下的Minecraf

gitblog_00178的博客 426

java display 999_Java Display.isActive方法代码示例

import org.lwjgl.opengl.Display; //导入方法依赖的package包/类public void tick() {if (!Display.isActive() && !inventory.isOpen()) inventory.open();ChunkSystem.removeDistantChunks();final int cameraChunk...

weixin_39643244的博客 128

iOS平台终极Minecraft启动器深度解析:PojavLauncher_iOS完整开发指南

PojavLauncher_iOS是一款基于Boardwalk项目的Minecraft: Java Edition启动器,专为iOS和iPadOS设备设计。这款开源启动器实现了在移动设备上运行桌面版Minecraft Java Edition的突破性技术,支持从最早的Beta版本到最新快照的所有游戏版本。通过创新的架构设计和跨平台兼容性,PojavLauncher为移动端Minecraft玩家提供

gitblog_00555的博客 1018

Minecraft 1.8.9轻量化UI模组开发:Vibe Coding实践指南

在游戏模组开发领域,事件驱动架构是实现功能扩展的核心原理。通过监听游戏运行时触发的各类事件,开发者可以精准介入渲染、交互等关键流程,从而在不修改游戏源码的前提下实现个性化功能。这种技术为游戏界面(UI)的定制化增强提供了可能,其价值在于能显著提升玩家的视觉反馈与操作体验。在Minecraft等沙盒游戏中,轻量化、高兼容性的UI模组尤其受到社区欢迎。本文聚焦于一种名为“Vibe Coding”的高效开发实践,它强调目标单一与代码轻量,并自然融入了命中标识和按键显示等热词功能。我们将以此理念为指导,详细讲解如何

weixin_34279184的博客 390

基于Forge事件系统实现Minecraft 1.8.9轻量化UI模组开发实战

在游戏模组开发领域,事件驱动架构是实现功能扩展的核心原理。通过监听和处理游戏运行时触发的各类事件,开发者能够在不修改游戏源码的前提下,无缝集成自定义功能。这种技术方案在Minecraft模组开发中尤为关键,Forge模组加载器提供了完善的事件总线系统,允许开发者精准地介入游戏逻辑的各个阶段。其技术价值在于实现了功能模块的高内聚、低耦合,提升了代码的可维护性和模组的兼容性。在Minecraft这类沙盒游戏中,事件系统广泛应用于用户界面增强、游戏机制修改等场景。本文聚焦于Minecraft 1.8.9版本,详细

weixin_34331102的博客 463

Mindustry高效安装教程:从零搭建自动化建造游戏环境

Mindustry作为一款开源的自动化建造与塔防结合的RTS游戏,让玩家在星际间建立工业帝国。本教程将帮助你快速完成开源游戏安装,掌握自动化建造游戏配置的关键步骤,轻松开启资源管理与基地建设的星际冒险。 ## 一、准备阶段:如何检测并配置游戏运行环境 ### 1.1 硬件兼容性检测清单 - **处理器**:双核2.0GHz以上 - **内存**:至少4GB RAM(推荐8GB) - **显卡*

gitblog_00246的博客 475
上一篇: unity基础开发----Photon服务器引擎 入门教程二
下一篇: 关于国产跨平台的开源游戏引擎LGame
SunRaIN_
博客等级 码龄15年 23粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值