📅  最后修改于: 2023-12-03 14:43:07.152000             🧑  作者: Mango
JOGL Lightning是一个基于Java的OpenGL库,它可以让Java程序员直接访问OpenGL并制作跨平台的图形应用程序。这个库提供了Java绑定到OpenGL API的所有功能,同时采用了Java才有的特性,比如垃圾回收、异常处理等。此外,JOGL Lightning不需要额外的本机库支持,而是全部用Java实现。
| 功能 | JOGL Lightning | OpenGL | | - | - | - | | 编程语言 | Java | C语言 | | 标准库 | Yes | No | | 面向对象 | Yes | No | | 跨平台 | Yes | No | | 安全性 | 高 | 一般 | | 总体效率 | 低 | 高 |
您可以从以下链接中下载JOGL Lightning。
https://jogamp.org/deployment/jogamp-current/archive/
解压缩下载的文件,得到jogl-all.jar
和gluegen-rt.jar
两个JAR文件。您可以将它们添加到您的Java项目的类路径中(例如放入lib
目录下并将其添加到Eclipse/NetBeans项目的Build Path中)。
以下是在Maven项目中添加JOGL Lightning的pom.xml文件内的配置示例:
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all-main</artifactId>
<version>2.4.0-rc-20210227</version>
</dependency>
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt-main</artifactId>
<version>2.3.3</version>
</dependency>
以下是一个使用JOGL Lightning绘制一个简单的立方体的例子。
import com.jogamp.opengl.*;
import com.jogamp.opengl.awt.GLCanvas;
import javax.swing.JFrame;
public class Main implements GLEventListener {
public static void main(String[] args) {
Main listener = new Main();
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(listener);
JFrame frame = new JFrame("JOGL Lightning Example");
frame.getContentPane().add(canvas);
frame.setSize(1440, 900);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void init(GLAutoDrawable drawable) { }
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { }
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1f, 0f, 0f); // Red
gl.glVertex3f(-0.5f, -0.5f, 0.5f);
gl.glVertex3f(0.5f, -0.5f, 0.5f);
gl.glVertex3f(0.5f, 0.5f, 0.5f);
gl.glVertex3f(-0.5f, 0.5f, 0.5f);
gl.glColor3f(0f, 1f, 0f); // Green
gl.glVertex3f(-0.5f, -0.5f, -0.5f);
gl.glVertex3f(-0.5f, 0.5f, -0.5f);
gl.glVertex3f(0.5f, 0.5f, -0.5f);
gl.glVertex3f(0.5f, -0.5f, -0.5f);
gl.glColor3f(0f, 0f, 1f); // Blue
gl.glVertex3f(-0.5f, 0.5f, -0.5f);
gl.glVertex3f(-0.5f, 0.5f, 0.5f);
gl.glVertex3f(0.5f, 0.5f, 0.5f);
gl.glVertex3f(0.5f, 0.5f, -0.5f);
gl.glColor3f(1f, 1f, 0f); // Yellow
gl.glVertex3f(-0.5f, -0.5f, -0.5f);
gl.glVertex3f(0.5f, -0.5f, -0.5f);
gl.glVertex3f(0.5f, -0.5f, 0.5f);
gl.glVertex3f(-0.5f, -0.5f, 0.5f);
gl.glColor3f(1f, 0f, 1f); // Magenta
gl.glVertex3f(0.5f, -0.5f, -0.5f);
gl.glVertex3f(0.5f, 0.5f, -0.5f);
gl.glVertex3f(0.5f, 0.5f, 0.5f);
gl.glVertex3f(0.5f, -0.5f, 0.5f);
gl.glColor3f(0f, 1f, 1f); // Cyan
gl.glVertex3f(-0.5f, -0.5f, -0.5f);
gl.glVertex3f(-0.5f, -0.5f, 0.5f);
gl.glVertex3f(-0.5f, 0.5f, 0.5f);
gl.glVertex3f(-0.5f, 0.5f, -0.5f);
gl.glEnd();
}
public void dispose(GLAutoDrawable drawable) { }
}
此例使用了JOGL Lightning的基本方法,初始化OpenGL绘图环境并绘制一个由六个纯色面组成的简单立方体。