将Canvas和JPanel用于2D游戏引擎(和Buffering?)之间的区别

时间:2017-04-16 19:24:07

标签: java swing canvas 2d game-engine

我从各种教程中学到了在JFrame上使用Canvas为2D游戏引擎渲染图像。我不得不创建一个BufferStrategy来保持图像平滑等等,但最近我听说使用JPanel来渲染图像。我应该使用JPanel吗?如果是这样,我还需要创建BufferStrategy还是集成它。我真的被误导了,我甚至有意义吗?我是一个初学者,所以请随意尝试纠正我并指导我 - 由于某种原因,我对此非常不知所措:P谢谢。

1 个答案:

答案 0 :(得分:1)

BufferedStrategy

使用"活跃的绘画"。它可以直接控制什么时候被绘制

  • 提供更好的帧速率控制
  • 具有低级别连接,并提供对硬件加速的访问

摇摆

使用"被动绘画"。有一个RepaintManager可以控制调度的时间和内容,这会被发布到事件调度线程中,并与所有其他事件一起处理。

  • 无法直接控制涂装系统
  • 可变帧率

两个

通过相同的渲染管道链接,通常是DirectX或OpenGL

游戏引擎

取决于。大多数游戏引擎必须以Canvas开头,因为这通常是将Java链接到底层渲染引擎的唯一方法。大多数游戏引擎都是低级本机绑定或轻量级的DirectX或OpenGL,让您直接访问这些API(in)

有些引擎可能仍会直接使用Swing,但它们会受到限制,可能适用于您不需要3D或高/一致帧速率的情况。

Chooice

这是个人意见的问题。你需要一个恒定的帧速率吗?你想做3D还是足够2D?您想要执行低级功能(纹理操作等)吗?

有用的参考资料