Java JOGL:如何使用GL和图形创建图像?

问题描述:

使用JOGL,作为一个项目基本上我学习的openGL帮助我学习,我要做一个简单的游戏,但在此之前,我想画一个正方形和移动相机与周围的箭头键。Java JOGL:如何使用GL和图形创建图像?

,因为我不是很好用OpenGL实现我做了它使用awt.Graphics和缓冲图像,它绘制到GLCanvas中一个小菜单。然后当我选择一个按钮时,它使用javax.media.opengl.GL呈现游戏(当前只是方形)。

此设立的作品完美,以呈现给GLCanvas中的两种方法之间的切换。一个或另一个可以画到画布上,使我能够利用当前的Java图形知识创建复杂的2D菜单,并切换到JOGL GL以学习3D图形。

,但它是一个或完全猪屏幕另一方面,

所以,问题是我怎么可以创建在屏幕上的图像是两者的混合物? I.e我怎么能让我的3D立方体在屏幕上快乐地旋转,并在Java Graphics绘制的顶部有一个菜单栏?我如何让他们画到相同的对象/东西,所以我只是粘贴菜单的2D图像通过3D

如果这是不可能的,我会简单地使用键盘命令,直到我有足够的信心与GL直接用它创建菜单。

如果你wan't看到我的任何代码,我可以编辑这个职位,但我看不出它如何能是有帮助的(但你可能,所以请询问)

非常感谢

你绝对正确,你不能在一个面板中混合使用JOGL和Java2D。所以你将不得不做一些技巧。

如果这两个占据屏幕的不同区域,如菜单和动画的画布,你也许能够只创建两个独立的面板 - 一个用于Java2D的,一个用于JOGL。它们不能重叠,但它们可以坐在一起并看起来像是同一个窗口的一部分。

如果您需要在同一个面板混合JOGL和Graphics2D的重叠,最简单的方法是使用GLPBuffer。 GLPBuffer是GLDrawable的屏幕外区域。您将JOGL渲染到它,然后从中创建一个位图,并使用Java2D将该位图绘制到窗口。有关更多信息,请参阅this question。这样做你会受到轻微的性能影响,但可能不如你想象的那么高。

如果您确实需要在最终快速的性能相同的面板你将不得不使用JOGL绘制一切混合2D和3D。您将不得不重新学习如何使用JOGL而不是Java2D绘制菜单。在好处上,你可能会看到略微的性能提升。而且你将成为深入了解OpenGL的少数非常酷的人之一。

+0

感谢一束,终于通过使用图形每帧写入到缓冲的图像,然后将其转换成一个纹理我映射到四元,其是在一个固定的位置相比,相机固定它:d – Troyseph

+0

该工程太。我应该提到它。 – DJClayworth