将 Canvas 和 JPanel 用于 2D 游戏引擎(和缓冲?)
Difference between using Canvas and JPanel for a 2D game engine (and Buffering?)
我从各种教程中了解到如何在 JFrame 之上使用 Canvas 来为 2D 游戏引擎渲染图像。我必须创建一个 BufferStrategy 来保持图像平滑等,但最近我听说使用 JPanel 代替渲染图像。我应该使用 JPanel 吗?如果是这样,我还需要创建一个 BufferStrategy 还是集成了它。我真的被误导了吗?我什至说得通吗?我是初学者,所以请随时尝试纠正我并指导我 - 出于某种原因我对此感到非常不知所措:P 谢谢。
缓冲策略
使用“主动绘画”。它使您可以直接控制何时绘制某些内容
- 更好地控制帧速率
- 具有低级别连接,并提供对硬件加速的访问
摇摆
使用“被动绘画”。有一个 RepaintManager
控制何时绘制什么以及绘制什么,它被发布到事件调度线程并与所有其他事件一起处理。
- 没有直接控制绘画系统
- 可变帧率
两者都
link通过相同的渲染管道,通常是 DirectX 或 OpenGL
游戏引擎
视情况而定。大多数游戏引擎必须以 Canvas
开头,因为这通常是 link Java 到底层渲染引擎的唯一途径。大多数游戏引擎都是低级本机绑定或 DirectX 或 OpenGL 上的光包装,让您可以直接(在)访问这些 API
一些引擎可能仍会直接使用 Swing,但它们会受到限制,并且可能适用于不需要 3D 或 high/consistent 帧速率的情况。
选择
这是个人意见。您需要恒定的帧速率吗?你想做 3D 还是 2D 就足够了?您想执行低级功能(纹理操作等)吗?
有用的参考资料
我从各种教程中了解到如何在 JFrame 之上使用 Canvas 来为 2D 游戏引擎渲染图像。我必须创建一个 BufferStrategy 来保持图像平滑等,但最近我听说使用 JPanel 代替渲染图像。我应该使用 JPanel 吗?如果是这样,我还需要创建一个 BufferStrategy 还是集成了它。我真的被误导了吗?我什至说得通吗?我是初学者,所以请随时尝试纠正我并指导我 - 出于某种原因我对此感到非常不知所措:P 谢谢。
缓冲策略
使用“主动绘画”。它使您可以直接控制何时绘制某些内容
- 更好地控制帧速率
- 具有低级别连接,并提供对硬件加速的访问
摇摆
使用“被动绘画”。有一个 RepaintManager
控制何时绘制什么以及绘制什么,它被发布到事件调度线程并与所有其他事件一起处理。
- 没有直接控制绘画系统
- 可变帧率
两者都
link通过相同的渲染管道,通常是 DirectX 或 OpenGL
游戏引擎
视情况而定。大多数游戏引擎必须以 Canvas
开头,因为这通常是 link Java 到底层渲染引擎的唯一途径。大多数游戏引擎都是低级本机绑定或 DirectX 或 OpenGL 上的光包装,让您可以直接(在)访问这些 API
一些引擎可能仍会直接使用 Swing,但它们会受到限制,并且可能适用于不需要 3D 或 high/consistent 帧速率的情况。
选择
这是个人意见。您需要恒定的帧速率吗?你想做 3D 还是 2D 就足够了?您想执行低级功能(纹理操作等)吗?