我创建了一个 map 应用程序,它使用一个非常大的图像作为我的 map 。当用户放大到一定程度时,它会显示高分辨率图块,当缩小超过 50% 时,它会显示整个图像的低分辨率位图。它工作正常,在我的原始机器人上,有时我会看到由于新图块被吸入垃圾收集器和从垃圾收集器中抽出而导致的非常轻微的延迟。

我现在在考虑 OpenGL ES 如何成为更好的渲染方式。我以前从未接触过它,但从我在不同 turoials 中阅读的内容来看,似乎我可以创建一个具有 8 个左右面的四边形,并启用剔除,以便它只绘制当前在屏幕上可见的图像。

这会完全消除滞后吗?现在在我的测试应用程序中,我在应用程序启动时加载了磁贴,但我可以看出延迟是由于这些磁贴是第一次绘制的。谢谢。

最佳答案

我已经写了一个基于 OpenGL 的 map View ,如果我自己这么说,那真是太棒了。可悲的是,这是一个商业项目,所以我不能提供代码。但是,我可以告诉您,它有 1 个渲染线程、一个由 8 个图块下载线程组成的池,以及(与您的问题最相关)1 个用于将图块加载并保存到 NAND 闪存或 SD 卡的存储线程。一次渲染一个图块,每个图块是 2 个三角形(ES 中没有四边形)。它仍然非常快。

关于android - 在 OpenGL ES 和 Android 中处理大型位图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4234689/

10-12 17:43
查看更多