计算机图形学一直是最能激发我的灵感的学科,我对它有着非常深厚的兴趣。
之前用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
分享到:
相关推荐
以太3D 3D 游戏开发,基于 Java 使用 LWJGL。 目前具有基本的渲染功能、一些基本的运动、在摄像机和玩家之间切换的能力、对象导入和一些基本的时间环境控制。
book书 该存储库包含《》一书各章的源代码。 源代码在下获得许可
lwjglbook-CN-翻译:Lwjglbook(lwjgl教程)中文翻译,《用LWJGL3开发3D游戏》
LWJGL使开发人员可以访问高性能的跨平台库,例如OpenGL(开放图形库),OpenCL(开放计算语言)和OpenAL(开放音频库),从而可以使用最先进的3D游戏和3D声音。 此外,LWJGL还提供对诸如游戏手柄,方向盘和操纵杆之...
只是一个个人项目,开始使用 OpenGL/LWJGL 开发功能性 3D 引擎。 README 将在我实际开始实施演示以测试照明、着色器等以找出错误和功能后更新。指导您还需要在使用的计算机上安装 。 为了使用这个引擎,你必须下载...
Java和Java开发人员在AFRAME或ECSY之类的3d软件系统上一起工作时,似乎之间缺乏桥梁。 此回购是学习ECS系统的基础步骤,尽管没有能力访问该系统以提高性能,但如何将其应用于Web开发。 JAVA与C ++足够相似,但同时...
Quark是基于OpenGL的跨平台Java框架,可在桌面和浏览器上使用。 特征 扩展文档以简化开发 在Windows,Linux和Mac上部署游戏 在浏览器( )上部署游戏 多线程支持可确保游戏流畅运行 支持旧版和现代OpenGL(OpenGL ...
Java:trade_mark:3D开源游戏引擎。目标我开发此游戏引擎的目的是使游戏引擎充满功能和技术,同时仍非常易于开发游戏。引擎盖下该引擎使用来处理图形和音频,并被设计为可扩展,模块化和面向未来。特征Polygame仍在...
LWJGL 使开发人员能够访问高性能跨平台库,例如 OpenGL(开放图形库)、OpenCL(开放计算语言)和 OpenAL(开放音频库),从而实现最先进的 3D 游戏和 3D 声音。 此外,LWJGL 还提供对游戏手柄、方向盘和操纵杆等...
##About 在我的第二年计算课程中,我决定创建一个 3D roguelike,因为它不是我以前见过的(不是等距...##技术信息 整个项目是使用 OpenGL 渲染的,虽然是用 Java 编写的(使用 LWJGL),同时使用 VBO 进行静态几何图形
要求Clojure 1.8+ Java:1.8 + 莱宁根2.7.1+ LWJGL 3.0+(通过Hello_jgl,谢谢!)如何开始? 在examples/yaw-reactive有两个示例,只需在您喜欢的Clojure环境中对其进行评估即可,并尝试弄清它们是如何工作的(有时...
这是由我和几个朋友开发的3D生存恐怖游戏。 视频 所需的图书馆 [LWJGL2] [JOML] [Slick2D] [JOrbis] [Ini4j] [JSquish] 汇编 在项目的构建路径中包括所需的库,以及该项目的源代码。 确保也包括LWJGL的本地人...
沙盒3D多人引擎开发。 使用LWJGL和OpenGL。
3D 史诗之旅 一个简单的 3D OpenGL Java 项目,由 Alfred 'SK' Sporre 和 Edvard Thörnros 使用开源库 LWJGL 开发。