【问题标题】:Can Java2D be as fast as LWJGL and JOGL?Java2D 能像 LWJGL 和 JOGL 一样快吗?
【发布时间】:2011-03-20 21:37:25
【问题描述】:

我听说 Java2D 在幕后使用 OpenGL 来进行渲染,我想知道是否值得使用 JOGL 以及我的程序的所有本机库,它只是一个 2D 横向滚动条。我听说您必须使用某些技术和需要避免的场景以确保正在使用硬件加速,但我不知道它们是什么(嗯,我知道一些,但我还没有找到它们的完整列表。)。

【问题讨论】:

  • 你可以自己做一些快速的基准测试来看看。用所有 3 做一些精灵和 blitting,看看它是如何工作的。有和没有硬件加速。

标签: java graphics jogl java-2d lwjgl


【解决方案1】:

作为 a 2D casual game in Java using LWJGL 的共同开发者,如果您要制作休闲游戏,我建议不要使用 LWJGL 或 JOGL。

优点:

  • 简化引擎编写:OpenGL 具有高填充率,这意味着您可以每帧重绘屏幕。
  • 可以制作很酷的 3D 效果。

缺点:

  • 所有用户都需要拥有 3D 卡。
  • 所有用户都需要安装 OpenGL 驱动程序。 Windows 7 未安装任何 OpenGL 驱动程序(在 Google 上查找“pixel format not accelerated”以了解其带来的乐趣)。
  • 3D 卡会消耗电池电量,尤其是在旧笔记本电脑上。人们经常在笔记本电脑上玩休闲游戏,所以这可能是个问题。
  • 小程序需要额外的权限才能使用 3D 卡。除非您愿意购买 500 美元的证书,否则这会导致用户必须点击才能玩游戏的可怕权限对话框。

我的建议是使用像PulpCore 这样的Java2D 渲染和动画框架来开发您的游戏。我希望我们有。

【讨论】:

  • 您关于证书的观点是错误的,因为例如 JOGL 已经提供了签名版本。无需再次签署您的游戏/应用程序。
  • 即使是一个蹩脚的板载芯片也足以满足休闲游戏的需求,“像素格式未加速”主要关注 LWJGL 而不是 JOGL,即使在这种情况下,LWJGL 中有一个标志允许使用的“软件”OpenGL(Microsoft GDI 渲染器,通过 Direct3D 模拟的 OpenGL),JOGL 无论如何都能够使用这个 Microsoft OpenGL 驱动程序,使用硬件加速不会消耗电池(尤其是 v-sync 时)明显比可能使用的 Java2D硬件加速效率非常低,Java2D 性能跨平台不一致,不支持 Android。
【解决方案2】:

您可以使用一些库将 Java2D 绘制到 OpenGL 中。 GLG2D(我的图书馆)这样做。它依赖于 JOGL 并将所有 java.awt.Graphics2D 调用转换为 OpenGL 调用。

画线,尤其是曲线,在 Java2D 中可能非常慢。

【讨论】:

  • 这个真的很有用,但是jogl已经6年没更新了。我在 java2s 上找到了您的 GLG2D 的一些 LWJGL 版本,但它只有几个 sn-ps。你开发过吗?
【解决方案3】:

简短的回答,不。 Java2D 上的膨胀层实在太多了,因为它的速度几乎与 LWJGL 或 JOGL 应用程序一样快。

【讨论】:

    【解决方案4】:

    您可以在 Java2D 中启用硬件加速,但即使在这种情况下,它仍然比任何用于 OpenGL 的 Java 绑定(JOGL、LWJGL)都慢(有时还存在错误)。如果您想要两全其美,请查看上面 Brandon 建议的 GLG2D。请记住,Java2D 是高级 API,而 JOGL 是低级绑定。您可以使用依赖于这些低级 OpenGL 绑定的高级 API,例如 JGame、Slick 和 LibGDX。

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多