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

用OpenGL四叉树绘制大型矩形平铺图像

龙博
2023-03-14

我目前正在为特别大的图像文件(有时在千兆像素)设计和开发定制的图像查看器。幸运的是,这些在分阶段分辨率层中以256x256瓦片的形式提供,然后在需要时传递给OpenGL。

瓷砖本身通过一个四叉树进行管理,这似乎是“几乎两幅图像的幂”的一个强有力的解决方案。然而,如果图像的宽高比非常大(例如,1千兆像素x 50000),模型就会因大量的空分片而变得不稳定。一次只能展示有限数量的瓷砖。

我正在使用Java7和LWJGL来提供OpenGL上下文
四叉树解决方案是否适合这个问题,或者是否有更好的替代方案来管理数据?

编辑:编辑标题以使其更有意义。

共有1个答案

何兴邦
2023-03-14

四叉树强制您沿着两个坐标轴分割。你的问题有一个广泛的方面,所以其中一个轴会过度分裂。

您有两种解决方案:

  • 使用BSP。类似的概念,但不是拆分两个坐标范围,而是选择一个,并将其拆分为2。有了这个,你可以沿着大范围分割,而不是沿着小范围分割。
  • 在顶层使用QuadTrees网格。这样你就可以把空间分成粗糙的方块,这样你就可以更好地利用这些比特。@Andreas在评论中也提出了这一点。
 类似资料:
  • 我正在尝试生成随机大小的椭圆,并将其绘制到地图上(只是一个二维瓷砖阵列)。在大多数情况下,这是可行的,然而,当房间比它更宽时,它似乎会切断墙角。 下面是我绘制椭圆的代码。基本上是取一个矩形并在其中绘制椭圆。 我这样称呼这种方法。在随机位置生成随机大小的矩形,然后创建墙砖的椭圆,然后用地砖覆盖内侧墙砖。 还有一个额外的问题,有人知道我怎么才能不把1块瓷砖放在椭圆的顶部/底部吗?

  • 对于我正在编写的游戏,我在非正方形地图上使用四叉树。四叉树用于查找给定最大半径(圆)内的相邻单位的冲突检测、要攻击的敌人、最近的基地等。 我想知道的是,如果将四边形树由矩形而不是正方形制成,是否存在性能问题?矩形地图不是将正方形地图划分为正方形,而是在四边形树中划分为大小相等的矩形。 矩形地图上的方形四叉树:将创建一个四叉树,填充整个地图,但左侧或底部有空白/未使用区域,具体取决于地图的方向(水平

  • 各位程序员好, 我在代码中遇到了一个似乎无法破解的小问题。它与Java的Jframe;图形区域有关。我将在下面发布的代码是在一个绘图方法上。其目的是绘制ArrayList中的房间,该房间位于另一个类中,因此之前。这种偏离航线的情况不会发生,因此在这里发帖。 获取有关该项目的背景信息是ArrayList,其中包含各种不同大小和颜色的房间。房间本身就是物体。 首先是课程: 下面是用于创建房间的类。 我

  • 我到处都找过了,我似乎无法让OpenGL绘制一个简单的四边形。窗口在正确的颜色背景下显示得很好,但OpenGL就是不会绘制框。我正在使用OpenGL 4.4.0-构建20.19.15.4463窗口大小为1920x1080 这是我目前拥有的代码: 在Main.java: 在实体框中:

  • 使用closePath()闭合图形 首先我们用上节课的方法绘制一个矩形。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT

  • [Chrome v32] 未捕获的TypeError:Object[Object Object]没有方法“set stagereference”