我想用Java进行游戏开发,并希望将来将游戏导出到移动设备(android和IO)。我有一些Java背景,并希望首先用它进行简单的游戏练习。
我在java教程中遇到的游戏教程使用JFrame,JPanel和canvas来绘制游戏。我也开始使用java.awt库中的GraphicsDevice api教程。我很迷惑。从GraphicsDevice api的描述中,我认为它允许游戏全屏;但是,JFrame已经无法实现吗?任何人都可以告诉我有没有GraphicsDevice api的差异?
另外,我发现了一些暗示OpenGL EU的帖子。如果我理解正确,它可以提升游戏图形性能。是否鼓励每场比赛都使用OpenGL?它与GraphicsDevice api类似吗?如果是的话,我认为它不能与GraphicsDevices api在同一个游戏中共存;否则,我认为他们可以共存,游戏可以利用这两个api。如果我错了,请纠正我......到目前为止我真的不太了解。
答案 0 :(得分:0)
我在java教程中遇到的游戏教程使用了JFrame, JPanel和画布绘制游戏。我也跑过教程 开始使用java.awt库中的GraphicsDevice api教学。一世 我很困惑。我想,从GraphicsDevice api的描述来看 它允许游戏全屏;然而,这是不可能实现的 有JFrame吗?任何人都可以告诉我与和的区别 没有GraphicsDevice api?
Canvas
提供对BufferStrategy
的访问权限,使您能够控制渲染过程。这通常称为主动渲染,与Swing的工作方式相反,后者使用被动渲染过程
Full-Screen Exclusive Mode提供了基于帧渲染的一些好处,通常,它会更快,因为您可以独立访问屏幕而不受其他窗口的阻碍或操作系统因为更改而需要执行额外绘制(操作系统) )可以检测/要求
另外,我发现了一些暗示OpenGL EU的帖子。如果我理解 正确地说,它可以提升游戏图形性能。是吗 鼓励每场比赛使用OpenGL?它是否类似于 GraphicsDevice api?如果是,我会认为它不能共存 与GraphicsDevices api相同的游戏;否则,我会认为他们可以 共存并且游戏可以利用这两种api。如果我,纠正我 我错了......到目前为止,我真的不太了解。
Java,至少通过Swing,不确定AWT,可以将OpenGL和DirectX用于它的渲染管道,尽管如此,直接使用OpenGL绑定还有一些额外的好处,一个是包含3D功能。
我建议首先尝试开发概念和算法,了解如何将游戏状态与游戏视图和游戏控制器分开,了解主游戏循环的目的,例如,这些概念将永远是无论你在发展什么都很重要......
iOS具有OpenGL绑定/功能,因此最终学习它们仍然是一个好主意,但它们可能会妨碍开始。
OpenGL绑定就是这样,它们允许您通过使用基于AWT的组件来渲染OpenGL驱动程序和API。我也相信一些OpenGL绑定也试图将API客观化以使其更具OO - 个人而言,我喜欢这个想法,但有些人不喜欢它。