代码之家  ›  专栏  ›  技术社区  ›  Morrowless

Mipmapping在一个类似google地图的可伸缩视图中?

  •  1
  • Morrowless  · 技术社区  · 14 年前

    我有一个巨大的地图图像(8192x6144px),我想在1x到0.1x的范围内显示。在1x,使用PVR4-bpp压缩大约是24MB——有点太多了。所以我想根据地图的比例,以不同的分辨率加载它们。

    mipmapping是否实现了我需要的功能,即根据地图比例加载/卸载mipmapps的级别?据我所知,似乎所有mipmap级别都需要加载,并且不能在运行时生成/释放。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Calvin1602    14 年前

    从技术上讲,它可以(您可以选择要更新/获取的mipmap级别之一),但这给您留下了一个初始问题:当您处于最大缩放时,必须在内存中保存整个图像。

    我可以想出两个选择。

    第一种是动态atlas纹理,也称为megatexturing或virtual texturing。你会发现很多关于这些主题的链接,但是这对于你想要的东西来说有点过分了。

    第二种是标准LOD(细节层次)。在“缩放0.1x”下,仅绘制一个具有低清晰度纹理的四边形。放大时,根据到摄影机的距离递归拆分四边形(near=recurse more)。对于每个中等或较小的四边形,以正确的分辨率创建一个新纹理,并将其绑定。

    所以你会有一系列512x512的图像,在不同的分辨率,在一个层次结构中组织。