计算机图形学一直是最能激发我的灵感的学科,我对它有着非常深厚的兴趣。
之前用C++/GLUT做了个入门级的OpenGL开发,时间过去很久了,原来的程序也随着我更换硬盘而丢失。C++我
学的不好,近期也不想重新捡起来。现在我用的最多的两门语言就是PHP和Java,昨天偶然在网上看到两个对于
OpenGL的两个Java类绑定,一个是JOGL,一个是LWJGL。此外还有一个基于LWJGL的游戏引擎JME。
JOGL是Sun支持的对于OpenGL的Java类绑定,不过现在看来这个项目已经死了,官网上都下载不到开发包了,我
决定不使用它。
LWJGL全称是Light Weight Java Game Library,即轻量级Java游戏开发库,其中还集成了OpenGL,OpenAL等,
可谓十分强大,且稳定更新。
JME全称是JMonkey Engine,是一个Java游戏引擎,底层基于LWJGL,将来可能会支持JOGL。
现在的问题是在LWJGL和JME中选择一个,对此我对比了它们两个的入门级程序。
首先是LWJGL的:
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.*;
public class Main {
public Main() {
try {
Display.setTitle("Kame");
Display.create();
//Fullscreen,可用
// Display.setFullscreen(true);
Display.setDisplayMode(new DisplayMode(800,600));
Display.setVSyncEnabled(true);
} catch (LWJGLException e) {
e.printStackTrace();
}
}
public void start() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 600, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
while (!Display.isCloseRequested()) {
// Clear the screen and depth buffer
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
// set the color of the quad (R,G,B,A)
GL11.glColor3f(0.5f,0.5f,0.8f);
// draw quad
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(100,100);
GL11.glVertex2f(100+200,100);
GL11.glVertex2f(100+200,100+200);
GL11.glVertex2f(100,100+200);
GL11.glEnd();
Display.update();
}
Display.destroy();
}
public static void main(String[] args) {
new Main().start();
}
}
然后是JME的:
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
public class MainEntry extends SimpleApplication {
public static void main(String[] args){
MainEntry app = new MainEntry();
app.start();
}
public void simpleInitApp() {
Box b = new Box(Vector3f.ZERO, 1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("m_Color", ColorRGBA.Blue);
geom.setMaterial(mat);
rootNode.attachChild(geom);
}
}
上面两个例子我都成功编译运行,环境是eclipse。
由于LWJGL的入门程序我给它加入了一个正方形,所以多了约15行代码。
整体来看,LWJGL中用的基本都是OpenGL中的变量和方法,如glBegin等,看起来更像是原生的OpenGL,
这点跟GLUT很像,而JME则是在LWJGL之上又给封装了一层,虽然方便了,但为此还不得不学JME。
而LWJGL呢,自然也得学,只是如果你之前用过OpenGL做开发的话,LWJGL用起来显然更友好些。
还有一点,JME编译后的程序正式运行前都会出现一个JME的设置窗体,而即使能编译成功,程序也时不时地
不能正常运行,终端里倒是会出现显卡、声音设备的一大堆初始化信息,不知怎么回事,所以JME给我的感觉是
不太稳定,且不易控制。
最终,我决定用LWJGL。
转载自http://blog.kiccp.com/341.html
分享到:
相关推荐
Java3D是Oracle公司开发的一种基于Java平台的三维图形编程库,它允许开发者创建复杂的3D场景,并在Java应用程序中进行交互式显示。这个技术基于OpenGL标准,为Java程序员提供了强大的3D图形处理能力,使得在Java环境...
**LWJGL**,全称为 Lightweight Java Game Library,是一个高度优化的Java库,专为游戏开发和高性能图形应用设计。这个库的目标是提供低级别的访问权限,包括硬件加速的图形、音频和输入功能,使得Java开发者能够...
《使用LWJGL 3进行3D游戏开发》是一本深入探讨如何使用 Lightweight Java Game Library(LWJGL)3 开发3D游戏的专著。LWJGL 是一个强大的开源Java库,它提供了对OpenGL、OpenAL、OpenCL等底层图形和音频API的封装,...
Java3D是一个基于Java平台的三维图形编程库,它提供了丰富的API来帮助...不过需要注意的是,Java3D的最新稳定版本发布于2007年,对于现代的高性能3D应用,开发者可能会转向更现代化的库,如jMonkeyEngine或LWJGL。
该项目不仅展示了如何使用Java和LWJGL进行OpenGL编程,还通过灯光、阴影和法线贴图技术,提供了丰富的视觉效果,对于学习和实践3D图形编程的开发者来说,是一个不可多得的资源。通过分析和运行该项目的代码,开发者...
Java3D是Oracle公司开发的一种基于Java平台的三维图形编程库,它允许开发者创建复杂的3D场景,并在Java应用程序中进行交互式渲染。这个技术基于OpenGL标准,为Java程序员提供了强大的3D图形处理能力,使其能够构建...
LWJGL,全称 Lightweight Java Game Library,是一款开源的Java库,专为游戏开发和图形密集型应用程序设计。这个"LWJGL整合包.rar"包含LWJGL的基础组件和必要的DLL动态链接库,是Java开发者进行游戏编程或者图形处理...
《lwjglbook》是一本专门讲解如何使用LWJGL 3开发3D游戏的书籍,源代码压缩包包含了书中各个章节的实例代码。LWJGL(Lightweight Java Game Library)是一个强大的Java库,它提供了低级别的硬件访问,包括图形渲染、...
LWJGL,全称 Lightweight Java Game Library 3,是一个高度优化的Java库,...无论你是开发游戏、可视化软件,还是进行科学计算,LWJGL3都是一个值得考虑的库,它提供的功能和易用性使其成为Java开发中的重要组成部分。
对于开发2D或3D游戏,LWJGL是一个非常实用的工具,因为它允许程序员以高效的方式利用现代计算机的硬件资源。 在"lwjgl配置文件"中,我们主要关注的是如何在Eclipse这样的集成开发环境中(IDE)正确配置和使用这些...
本项目“一个基于LWJGL的简易Java游戏引擎”就是利用LWJGL库实现的一个基础游戏引擎,适合初学者进行毕业设计或课程设计,同时也可作为提升编程技能的实践项目。 LWJGL是Java平台上的一个开源库,它提供了与OpenGL...
虽然Xith3D在社区中有一定的用户基础,但随着技术的发展,一些新的Java3D图形库如LWJGL和jMonkeyEngine开始崭露头角,它们提供了更多现代化的特性,逐渐成为了更多Java 3D项目的首选。但Xith3D仍然保持着一定的活跃...
LWJGL 是一个为Java开发者提供高性能图形、音频和输入处理功能的库,使得开发人员能够更便捷地构建跨平台的游戏应用程序。 1. **Java语言**: Java是一种面向对象的编程语言,以其“一次编写,到处运行”的特性闻名...
以太3D 3D 游戏开发,基于 Java 使用 LWJGL。 目前具有基本的渲染功能、一些基本的运动、在摄像机和玩家之间切换的能力、对象导入和一些基本的时间环境控制。
标题中的"ardor3d-lwjgl-0.7.jar.zip"是一个压缩文件,它包含了名为"ardor3d-lwjgl-0.7.jar"的Java Archive(JAR)文件。这个JAR文件是用于Java平台的软件包,通常用于封装多个类、资源和其他相关文件,便于分发和...
Java_《3D游戏开发与LWJGL 3》一书章节的源代码
此外,Java拥有强大的库支持,例如Java 3D库,用于创建三维图形,以及 lwjgl ( Lightweight Java Game Library ),它提供了与硬件交互的能力,包括声音、图形和输入设备控制,这些都是游戏开发的重要组成部分。...
Xith3D作为一个高性能的Java3D引擎,它以Java语言为基础,为开发者提供了一个易于上手且功能全面的3D开发平台。它不仅在性能上有所优化,还在功能丰富性、交互性、以及跨平台能力上表现突出,使得Java程序员也能轻松...