我想使用Java进行游戏开发,并希望在将来将游戏导出到移动设备( android和IOs)。我有一些Java的背景,我想先用它做一个简单的游戏来练习。
我在java教程中遇到的游戏教程使用JFrame、JPanel和画布绘制游戏。同时,我在教程中也使用了在GraphicsDevice库中教授java.awt api的方法。我很困惑。从GraphicsDevice api的描述来看,我认为它允许游戏是全屏的,但是,这不是已经可以用JFrame实现的吗?有人能告诉我GraphicsDevice api和没有api有什么区别吗?
此外,我还看到了一些建议OpenGL欧盟的帖子。如果我正确理解,它可以提高游戏图形的性能。是否鼓励在每一场比赛中使用OpenGL?它与GraphicsDevice api类似吗?如果是,我将假设它不能与GraphicsDevices api在同一个游戏中共存;否则,我将假设它们可以共存,并且游戏可以利用这两个api。如果我错了就纠正我.到目前为止我真的不太明白。
发布于 2014-05-21 03:16:18
我在java教程中遇到的游戏教程使用JFrame、JPanel和画布绘制游戏。同时,我在教程中也使用了在GraphicsDevice库中教授java.awt api的方法。我很困惑。从GraphicsDevice api的描述来看,我认为它允许游戏是全屏的,但是,这不是已经可以用JFrame实现的吗?有人能告诉我GraphicsDevice api和没有api有什么区别吗?
Canvas提供了对BufferStrategy的访问,这为您提供了控制呈现过程的能力。这通常被称为主动渲染,而不是Swing工作的方式,后者使用被动的渲染过程。
全屏排他模式在基于帧的渲染上提供了一些好处,通常情况下,它会更快,因为您可以不受其他窗口的阻碍而独占地访问屏幕,或者操作系统希望执行额外的绘制,因为它(操作系统)可能检测到/需要进行更改。
此外,我还看到了一些建议OpenGL欧盟的帖子。如果我正确理解,它可以提高游戏图形的性能。是否鼓励在每一场比赛中使用OpenGL?它与GraphicsDevice api类似吗?如果是,我将假设它不能与GraphicsDevices api在同一个游戏中共存;否则,我将假设它们可以共存,并且游戏可以利用这两个api。如果我错了就纠正我.到目前为止我真的不太明白。
Java至少通过Swing (不确定AWT )可以同时使用OpenGL和DirectX进行渲染,尽管如此,直接使用OpenGL绑定还有一些额外的好处,其中之一就是包含了3D功能。
我建议您先尝试开发概念和算法,了解如何将游戏状态与游戏视图和游戏控制器分开,了解主游戏循环的目的,例如,不管您正在开发什么,这些概念总是很重要的。
iOS有OpenGL绑定/功能,因此最终学习它们仍然是个好主意,但它们可能会妨碍开始工作。
OpenGL绑定只是为了让您能够通过使用基于AWT的组件通过OpenGL驱动程序和API来呈现。我还相信,一些OpenGL绑定也试图将API客观化,以使其更加面向对象--就我个人而言,我喜欢这个想法,但有些人不会喜欢它。
https://stackoverflow.com/questions/23773244
复制相似问题