1

我目前正在开发一个显示地图并在其上绘制一些标记的简单应用程序。我正在为 Windows Mobile 进行开发,所以我决定使用 DirectDraw 和 Imaging 接口来使应用程序快速而美观。当用户在触摸屏上移动手指时地图会移动,因此整个地图的移动/滚动动画必须快速,但事实并非如此。

在每次地图更新时,我都必须绘制地图的一部分、控制按钮和标记——按钮和标记作为 mipmap 预加载在 DirectDraw 表面上。所以我唯一要做的就是从 mipmap 到后台缓冲区,以及从后台缓冲区到主表面的 BitBlit(由于我的应用程序的窗口模式,我不能使用页面翻转)。

以前我使用具有 32 位 ARGB 像素格式的预乘 alpha 表面来制作图像 mipmap,一切看起来都很好,但是绘制整个“场景”非常慢 - 我可以忘记平滑的地图滚动。现在我正在使用具有原生 (RGB565) 像素格式和紫红色 (0xFF00FF) 颜色键的 mipmap。画画要好很多。

我的 mipmap 表面是在程序加载时生成的——图像从文件中加载、缩放(使用过滤)并在 mipmap 上绘制。问题是,图像缩放过程混合了像素颜色,并且那些位于精灵区域边界上的像素与周围的紫红色像素混合,产生不被视为颜色键的半紫红色。当我使用颜色键选项进行 blitting 时,精灵有类似紫红色的小边框,看起来非常糟糕。

如何解决这个问题呢?我可以使用 alpha blitting,但它太慢了——即使是 ARGB 1555 格式。

4

0 回答 0