JavaFX canvas 2D 游戏:移动背景与绘画
JavaFX canvas 2D game: Shift background vs. painting
过去几天我一直在查找教程和资料。我已经做了很多年的程序员,但直到现在我从来没有搞砸过制作游戏。
我正在使用 Java canvas 制作一个小型 2D 游戏,但我正在尝试选择正确的绘制方块地图的方法。
就目前而言,我的 canvas 是 640x512,它当前将按帧速率将所有可见图块绘制到视口上。对我来说,这似乎有点过头了,但我读过的所有内容都是这样暗示的。
我很好奇是否有一种方法可以在视口后面绘制整个地图并移动,这样它只需要绘制一次,然后每帧速率渲染地图上方的对象。
如有任何意见,我们将不胜感激。谢谢大家!
I'm in the process of making just a small 2D game using Java canvas,
but I'm trying to choose the correct method in painting the tile maps.
JavaFX 渲染基本上有两种方式:场景图(多节点,自动渲染),或canvas(单节点,手动渲染)。如果屏幕上有很多对象,出于性能原因,后者是首选。否则,前者提供了更高级别的绘图方法。
As it stands my canvas is 640x512 and it will currently paint all
visible tiles per frame rate onto the viewport.
使用 JavaFX Canvas 完全可以做到这一点。 JavaFX 有一个强大的渲染管道,可以找出渲染场景图的最佳和最有效的方式。如果像素不在活动视口中(实际上 在屏幕上可见的部分),它将不会被渲染。您可以阅读有关 JavaFX 体系结构的信息 here。
I was just curious if there is a way to draw the entire map behind the
viewport and shift so it only has to be drawn once, and then render
the objects above the map every frame rate.
在较低级别的 JavaFX 或更低级别的 Direct3D (Windows) 中,OpenGL (Mac/Linux) 将为您处理此问题。也许不完全是这种方式,但他们通常会缓存纹理以卸载内存总线。在大多数情况下,当尝试优化渲染时,所采取的步骤实际上会减慢流程,因此从某种意义上说,这些步骤只会妨碍适当的低级优化。因此,降低了整体性能。
总而言之,首先关注完成应用程序逻辑,然后才担心优化。即便如此,这也是一个敏感问题,必须使用适当的工具来解决,这些工具允许您分析和查明应用程序中的瓶颈。
过去几天我一直在查找教程和资料。我已经做了很多年的程序员,但直到现在我从来没有搞砸过制作游戏。
我正在使用 Java canvas 制作一个小型 2D 游戏,但我正在尝试选择正确的绘制方块地图的方法。
就目前而言,我的 canvas 是 640x512,它当前将按帧速率将所有可见图块绘制到视口上。对我来说,这似乎有点过头了,但我读过的所有内容都是这样暗示的。
我很好奇是否有一种方法可以在视口后面绘制整个地图并移动,这样它只需要绘制一次,然后每帧速率渲染地图上方的对象。
如有任何意见,我们将不胜感激。谢谢大家!
I'm in the process of making just a small 2D game using Java canvas, but I'm trying to choose the correct method in painting the tile maps.
JavaFX 渲染基本上有两种方式:场景图(多节点,自动渲染),或canvas(单节点,手动渲染)。如果屏幕上有很多对象,出于性能原因,后者是首选。否则,前者提供了更高级别的绘图方法。
As it stands my canvas is 640x512 and it will currently paint all visible tiles per frame rate onto the viewport.
使用 JavaFX Canvas 完全可以做到这一点。 JavaFX 有一个强大的渲染管道,可以找出渲染场景图的最佳和最有效的方式。如果像素不在活动视口中(实际上 在屏幕上可见的部分),它将不会被渲染。您可以阅读有关 JavaFX 体系结构的信息 here。
I was just curious if there is a way to draw the entire map behind the viewport and shift so it only has to be drawn once, and then render the objects above the map every frame rate.
在较低级别的 JavaFX 或更低级别的 Direct3D (Windows) 中,OpenGL (Mac/Linux) 将为您处理此问题。也许不完全是这种方式,但他们通常会缓存纹理以卸载内存总线。在大多数情况下,当尝试优化渲染时,所采取的步骤实际上会减慢流程,因此从某种意义上说,这些步骤只会妨碍适当的低级优化。因此,降低了整体性能。
总而言之,首先关注完成应用程序逻辑,然后才担心优化。即便如此,这也是一个敏感问题,必须使用适当的工具来解决,这些工具允许您分析和查明应用程序中的瓶颈。