【问题标题】:Java JOGL: How can create an image using both GL and Graphics?Java JOGL:如何同时使用 GL 和 Graphics 创建图像?
【发布时间】:2011-11-11 07:19:29
【问题描述】:

基本上我正在使用 JOGL 学习 openGL,作为一个帮助我学习的项目,我将制作一个简单的游戏,但在此之前我想画一个正方形并用箭头键移动相机。

因为我对 openGL 的使用不是很好,所以我制作了一个小菜单,它使用 awt.Graphics 和缓冲图像将其绘制到 GLCanvas 上。然后,当我选择一个按钮时,它会使用 javax.media.opengl.GL 呈现游戏(目前只是正方形)。

此设置完美运行,可在两种渲染到 GLCanvas 的方法之间切换。一个或另一个可以绘制到画布上,让我既可以利用我当前的 Java 图形知识来创建复杂的 2D 菜单,也可以切换到 JOGL GL 来学习 3D 图形。

但是,完全占据屏幕的是一个或另一个,

所以问题是如何在屏幕上创建一个混合了两者的图像?即如何让我的 3D 立方体在屏幕上愉快地旋转并在顶部有一个由 Java Graphics 绘制的菜单栏?如何让它们绘制到相同的对象/事物,所以我只是将菜单的 2D 图像粘贴到 3D 上

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

如果你不想看到我的任何代码,我可以编辑这篇文章,但我看不出它有什么帮助(但你可以,所以请询问)

非常感谢

【问题讨论】:

    标签: java opengl graphics awt jogl


    【解决方案1】:

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

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

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

    如果您绝对需要在同一个面板中混合 2D 和 3D 并最终获得快速性能,您将不得不使用 JOGL 来绘制所有内容。您将不得不重新学习如何使用 JOGL 而不是 Java2D 来绘制菜单。从好的方面来说,您可能会看到性能略有改善。您将成为少数真正了解 OpenGL 的非常酷的人之一。

    【讨论】:

    • 非常感谢,我终于通过使用图形在每帧写入缓冲图像来修复它,然后将其转换为我映射到与相机相比处于固定位置的四边形的纹理:D
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多