0

我正在用 Java 编写一个简单的 3D 引擎,我想使用 JOGL 或类似的库切换到 OpenGL。目前我使用 BufferedImage 和 Java.awt.Graphics 渲染我的图形。

private BufferedImage img;
public final int[] pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();

private void render() { 
BufferStrategy bs = this.getBufferStrategy();
Graphics g = bs.getDrawGraphics();
g.drawImage(img, 0, 0, WIDTH, HEIGHT, null);
...
}

有没有一种简单的方法可以将我的项目移植到 OpenGL 或者我需要从头开始?

4

2 回答 2

0

尝试Slick2D。它具有与 Java2D 非常相似的 API,并且是 OpenGL 加速的。

于 2013-10-24T21:53:53.083 回答
0

实际上没有任何简单的切换,因为在 OpenGL 中有很多东西需要学习,比如着色器 (GLSL)、VAO、VBO、IBO、状态改变、缓冲区绑定等。

但不仅如此,您还需要学习和理解矩阵和向量数学,其中矩阵数学肯定会非常困难。基本上,在正确使用 OpenGL 之前,您需要学习很多数学知识。

有没有一种简单的方法可以将我的项目移植到 OpenGL 或者我需要从头开始?

不是真的,因为Graphics/Graphics2D和 OpenGL 之间存在巨大差异。在里面Graphics你可以简单地调用drawImage然后绘制BufferedImage你加载的任何内容。在 OpenGL 中,您需要加载图像数据、创建句柄、将图像数据绑定到缓冲区、更改一些影响纹理的状态。不仅如此,您还需要创建顶点数据并将其创建并绑定到 aVAO和/或VBO. 然后是渲染,因为Graphics你可以简单地调用一个方法,而在 OpenGL 中你需要调用多个方法。

最重要的是,如果你真的想学习 OpenGL,那么不要只是“去努力”,在你开始使用它编程之前,阅读所有关于多个 tings 的内容并学会了解它们。相信我,你会帮自己一个忙!

因此,如果您仍然准备好完成任务,那么您可以尝试使用LWJGLJOGL

此外,如果您开始学习 OpenGL,那么请学习如何使用新方法,而不是使用旧的和过时的方法,这里有一些方法glMatrixMode(),, glLoadIdentity(), glTranslate(), glRotate(), glBegin(), glEnd(), glVertex(), glTexCoord(), glNormal(), glColor(), 当然当我说它glTranslate()适用于所有他们glTranslatef(),,glTranslated()等等。

于 2013-10-25T07:06:06.150 回答