JavaFX画布2D游戏:转换背景与绘画

时间:2016-01-15 19:21:46

标签: java canvas javafx 2d

过去几天我一直在查阅教程和内容。我已经做了很多年的程序员,但直到现在我还没有搞过游戏。

我正在使用Java画布制作一个小型2D游戏,但我试图在绘制瓷砖地图时选择正确的方法。

现在我的画布是640x512,它目前将每帧速率的所有可见图块绘制到视口上。对我来说,这似乎有点过分杀人,但我读到的一切都是这样的。

我很好奇是否有办法在视口后面绘制整个地图并移动所以只需要绘制一次,然后以帧速率渲染地图上方的对象。

任何意见将不胜感激。谢谢大家!

1 个答案:

答案 0 :(得分:3)

  

我正在使用Java canvas制作一个小型2D游戏,   但我试图在绘制瓷砖地图时选择正确的方法。

JavaFX渲染基本上有两种方式:场景图(多个节点,自动渲染)或画布(单个节点,手动渲染)。如果屏幕上有许多对象,出于性能原因,后者是首选。否则,前者,它提供了更高层次的绘图方法。

  

现在我的画布是640x512,它现在将全部绘制   每帧速率的可见图块到视口上。

使用JavaFX Canvas完成此操作非常方便。 JavaFX具有强大的渲染管道,可以找出渲染场景图的最佳和最有效的方法。如果像素不在活动视口中(屏幕上实际部分可见),则不会呈现该像素。您可以阅读有关JavaFX架构here的信息。

  

我很好奇是否有办法在整个地图后面绘制   视口和移位所以它只需要绘制一次,然后渲染   每个帧速率在地图上方的对象。

在较低级别的JavaFX甚至更低级别的Direct3D(Windows)中,OpenGL(Mac / Linux)将为您处理此问题。也许不完全是这样,但他们通常会缓存纹理来卸载内存总线。在大多数情况下,当尝试优化渲染时,所采取的步骤实际上会减慢进程,因此从某种意义上说,这些步骤只会妨碍正确的低级优化。因此,降低整体表现。

总结一下,首先关注的是完成应用程序逻辑,然后再担心优化问题。即使这样,这也是一个敏感的问题,必须使用适当的工具来完成,并使您能够分析和查明应用程序中的瓶颈。