当前位置: 首页 > 知识库问答 >
问题:

如何使用图形正确实现图层系统

松秦斩
2023-03-14

因此,我在一个jpanel上使用自定义重绘做一个游戏,实现如下

 public synchronized void paintComp(Graphics g) {
        //Buffer is a BufferedImage and it Graphics object
        EnumMap<Layer,Buffer> buffers = new EnumMap<>(Layer.class);
    for (Layer layer : Layer.values()) {
         buffers.put(layer, new Buffer(fsize.x, fsize.y));
    }
        this.ltime = System.currentTimeMillis();
        //there i draw all the game content on buffers' g
        this.scene.render(this, buffers, ltime, 0, 0);
        //then i draw all layers in the right order
        for (Buffer buf : buffers.values()) {
            buf.g.finalize();
            g.drawImage(buf.img, offset.x, offset.y, null);
        }
    }

基本上,因为游戏内容被组织成一棵树,我想在图层上绘制内容,然后在屏幕上绘制这些图层,以便有更好的顺序

问题是,我只知道如何做到这一点,每次调用该函数时,每层实例化1个BuffereImage,考虑到游戏速度约为60fps,我有18层,我每秒创建1000个BuffereImage。。。非常不理想:')

我怎样才能以更恰当的方式实现缓冲区的想法?我听说过光栅挥发图像缓冲策略,但我就是找不到我需要的信息,也找不到javadoc

共有1个答案

杨志强
2023-03-14

以下是一些想法(未经测试):

  1. 使用卡片布局使每个面板不不透明
 类似资料:
  • 图层 图层 最常用于 摄像机 只渲染场景的一部分,和 光线 只照亮场景的一部分。此外,射线投射也可以用它们选择性地忽略碰撞器或创建 碰撞。 创建图层 第一步是创建一个图层,稍后可以将其分配给一个 游戏对象 GameObject。要创建图层,请打开菜单并选择 Project Settings->Tags and Layers。 我们在空着的 User Layers 中新建一个图层。选择第 8 图层

  • 原文地址:https://cesiumjs.org/tutorials/Terrain-Tutorial/ Cesium支持渐进流式加载和渲染全球高精度地形,并且包含海、湖、河等水面效果。相对2D地图,山峰、山谷等其他地形特征的更适宜在这种3D地球中展示。 地形数据集是巨大的,通常都是GB或者TB级别。在普通3D引擎中,使用底层图形API去高效实现地形数据的可视化需要做很多事情。幸好,Cesium

  • 我是DSA的初学者,最近几天我一直在尝试使用邻接列表找到图形的正确实现。 下面我给出了我认为邻接列表是如何实现的整个代码。 我从头开始创建了一个SiinglyLinkedlist。并且我正在使用一个Hashmap来改进时间复杂性。 Hashmap中的整数键充当顶点&在其值中包含一个Linkedlist。 在顶点中,我存储了整数ID,在Linkedlist中,我存储了该ID的所有好友名。 图中有3种

  • 问题内容: 我上课很难。麻烦的是,我正在尝试将包裹中的一个成员写入对象,这是一个对象。的是,和对象()在列表中的。 以下是相关代码: 我在“ //帮助这里”标记了两个点,以了解如何正确地写包裹以及如何对其进行重建。如果经过(正确测试),我该如何正确执行? 问题答案: 你差点知道了! 您只需要做: 就这样! 对于您的Integer列表,您还可以执行以下操作: 它应该工作。

  • 我试图使用jFreechart生成两个图,每个图有12个图(在jFreechart中称为系列)。然而,有些图表被简单地跳过了!我知道我在这里有同步问题,并试图使用用户@trashgod在这里提供的方法,但我失败了。我知道我使用摇摆工人的方式是错误的!我不知道怎么修好它 每个图形应该包含10个平行的水平直线的图形。正如你在所附的图像中看到的,一些线条丢失了。这两个数字也必须相同(事实并非如此)。在实

  • 我正在尝试实现一个加权图。我知道有两种方法可以实现加权图。使用二维数组(邻接矩阵)或链接列表数组(邻接列表)。这两种方法中哪一种效率更高、速度更快?