在JAVA中使用OpenGL?!

在JAVA中使用OpenGL?!

为什么要用java跑ogl?我的理由是platform independence,你呢?或许你是JAVA高手?或许需要JAVA其他的优越之处?不管怎么样,你既然进来了,相必已经有了一个不错的理由了吧?
先说明,我们要使用jogl,它的官方主页在 https://jogl.dev.java.net/
好吧,假定你有一个JAVA的IDE(没有?你喜欢命令行?我也很菜,请你参考此文吧: https://jogl.dev.java.net/ ; ->  build documentation)
或许你愿意装一个免费的IDE?和我一样,在www.netbeans.org下载一个
然后但愿你有java SDK 1.4.2或者更高
https://jogl.dev.java.net/ ; ->  Precompiled binaries and documentation 下载这两个文件jogl.jar和jogl-natives-win32.jar(假定你OS是win32,如果是其他platform,请下载对应的文件)
有一点必须说明,目前jogl只支持到ogl1.5,什么时候2.0?who knows...
安装jogl.jar到classpath,在netbeans,把jogl.jar的文件夹加到文件系统(请原谅我居然用的是中文版,当初下netbeans的时候,我惊奇于这个IDE居然有中文版,才下下来看看)在文件系统中右击jogl.jar,安装它,OK
然后解压缩jogl-natives-XXXXX.jar,用java sdk自带的JAR行不?不知道,我用WINRAR解压缩了它
好吧,不管怎么说,这难不倒你,把解出来的两个.DLL丢到随便哪个java.library.path里
java.library.path是什么?不错,像我这样级别的菜鸟总是和我有着一样奇怪的问题
跑一下下面这个程序
public class shishi {
     public static void main(String[] args)
     {
System.out.println(System.getProperty("java.library.path"));
}  
}
看到一堆列出来的文件夹了吗?随便往哪个里面扔吧...
试试看下面,它能跑就行了
public class zaishishi {
    public static void main(String[] args)
    {
        System.loadLibrary("jogl" );
    }
}
好吧,这就是我这样失败的人一晚上干完的事儿,论坛上说:this takes little effort!郁闷!
这儿有一个简单的SAMPLE:一个opengl窗口
看不明白SAMPLE?看看这儿吧: http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=jogl;action=display;num=1058027992


本主题包含附件: sf_200411621837.rar (1059bytes)
此文件由用户上传,GameRes.com无法确定其安全性,请慎重使用
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java Swing 是一个基于 Java 的图形用户界面(GUI)工具包,主要用于开发桌面应用程序。而 OpenGL 是一个跨平台的 3D 图形库,通常用于游戏开发和科学可视化等领域。 虽然 Java Swing 自带一些绘图功能,但是如果需要实现复杂的 3D 图形渲染效果,还是需要使用 OpenGL 这样的专业图形库。在 Java Swing 使用 OpenGL 可以通过 JOGL(Java OpenGL)库来实现。 以下是使用 JOGL 实现在 Java Swing 使用 OpenGL 渲染的基本步骤: 1. 引入 JOGL 库:在项目引入 JOGL 库,可以通过 Maven 或手动下载并添加到项目来。 2. 创建 OpenGL 帧缓冲区:在 Java Swing 创建一个 JPanel,用于在其显示 OpenGL 渲染的图像。在 JPanel 创建一个 GLJPanel,作为 OpenGL 帧缓冲区。 3. 实现 OpenGL 渲染器:创建一个实现 GLEventListener 接口的类,用于实现 OpenGL 渲染器。在其实现 OpenGL 渲染所需的初始化、绘制等方法。 4. 在 JPanel 添加 GLJPanel:将 GLJPanel 添加到 JPanel ,以便在其进行 OpenGL 渲染。 下面是一个简单的示例代码,演示如何在 Java Swing 使用 JOGL 库实现 OpenGL 渲染: ```java import javax.swing.JFrame; import javax.swing.JPanel; import com.jogamp.opengl.GL; import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.awt.GLJPanel; public class OpenGLDemo extends JPanel implements GLEventListener { private static final long serialVersionUID = 1L; private GLJPanel panel; public OpenGLDemo() { // 创建 OpenGL 帧缓冲区 GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2)); panel = new GLJPanel(caps); panel.addGLEventListener(this); // 将 GLJPanel 添加到 JPanel add(panel); } @Override public void init(GLAutoDrawable drawable) { // 初始化 OpenGL 渲染器 GL gl = drawable.getGL(); gl.glClearColor(1f, 1f, 1f, 1f); } @Override public void display(GLAutoDrawable drawable) { // 实现 OpenGL 渲染 GL gl = drawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glBegin(GL.GL_TRIANGLES); gl.glColor3f(1f, 0f, 0f); gl.glVertex2f(-1f, -1f); gl.glColor3f(0f, 1f, 0f); gl.glVertex2f(0f, 1f); gl.glColor3f(0f, 0f, 1f); gl.glVertex2f(1f, -1f); gl.glEnd(); } @Override public void dispose(GLAutoDrawable drawable) { // 释放 OpenGL 资源 } @Override public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { // 重新设置 OpenGL 视口 GL gl = drawable.getGL(); gl.glViewport(0, 0, width, height); } public static void main(String[] args) { JFrame frame = new JFrame("OpenGL Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.setLocationRelativeTo(null); // 添加 OpenGLDemo 到 JFrame OpenGLDemo demo = new OpenGLDemo(); frame.add(demo); frame.setVisible(true); } } ``` 这个示例代码创建了一个 JFrame,其包含一个 JPanel,在其使用 JOGL 库创建了一个 GLJPanel 作为 OpenGL 帧缓冲区。在 GLEventListener 实现了初始化、绘制等方法,并将 GLJPanel 添加到 JPanel 。最后将 JPanel 添加到了 JFrame 并显示出来。 运行这个程序,就可以看到一个简单的 OpenGL 渲染效果。这个示例只是一个简单的演示,实际上使用 JOGL 库实现更复杂的 OpenGL 渲染还需要更多的代码和技术。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值