android中如何实现双缓冲铺地图(卡马克算法)

问题描述

想用卡马克算法来铺地图, 现在一点头绪也没用 问问大家~~

解决方案

已经很清楚了,保存图形区域就可以了。。。
解决方案二:
卡马克卷轴算法的引入 上面的算法虽然在一定程度上解决了地图绘制的效率问题,但对于某些资源严重不足的手机,或者由于地图块比较小、循环次数过多的情况,仍然会造成画图时屏幕闪烁。因此,在这种情况下,仍然需要对上述算法做进一步的优化。 不论采用哪种优化算法,一个基本的思路就是尽量减少绘制的次数,从而减少对系统资源的消耗。卡马克卷轴算法就是这样算法的一个经典例子。单方向卷轴 对于横版游戏来说,如果角色向右侧移动,则地图向左侧滚动。由于角色每次移动若干个步长,因此地图中新画出的区域宽度也为若干个像素,那么如果让系统重绘所有屏幕区域,很明显,大部分区域都是和上一屏幕区域相同的,如此造成成了资源的浪费。而卡马克算法的思路就是——如果上一次绘制过的地图也能够部分重用到本次地图绘制上来就好了。那么很容易想到在内存中建立一个和屏幕一样大或略大的缓冲区即可很好的完成这个设想。 由上图可以看到,区域B为相同的地图区域,这个区域在下一次屏幕重绘时,可以被重新利用。区域A是在下一次屏幕重绘中不被采用的区域,这区域应当被舍弃,但是如果稍微留意一下的话,不难发现区域A和区域C的面积大小其实居然是一样的。 那么如果建立一个和屏幕大小相同的缓冲,在其被舍弃掉的绘制区域A中画上新的区域C,再把区域B和区域C拼合到屏幕上,是不是就能达到减少系统资源消耗的目的了呢?卡马克卷轴的基本原理正是如此。
解决方案三:
卡马克算法是什麼樣的

时间: 2024-12-30 10:11:09

android中如何实现双缓冲铺地图(卡马克算法)的相关文章

内存拷贝-MFC中图像无法使用双缓冲拷贝

问题描述 MFC中图像无法使用双缓冲拷贝 我接手了别人的程序,需要使用双缓冲绘图,程序中定义的内存对象pDC可以绘制任何曲线,绘制完毕后复制给窗体.但是内存对象pDC就不能进行BitBlt操作,哪怕是自身平移拷贝自身都不可以.pDC->BitBlt(0, 0, rect.Width(), rect.Height(),pDC, 10, 10, SRCCOPY);不知道是pDC哪里设置有了问题?

Android采用双缓冲技术实现画板_Android

本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下 1.双缓冲技术的概念 所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制到该View组件,而是先绘制到一个内存中的Bitmap图片上(就是缓冲),等内存中的Bitmap绘制好之后,再一次性将Bitmap绘制到View组件上. 2.Android采用双缓冲实现画板  实现的思路: 1).定义一个内存中图片,将他作为缓冲区Bitmap cacheBitmap

双缓冲技术实现Android 画板应用_Android

什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果. 为什么要使用双缓冲技术?拿Android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没了,所以需要使用双缓冲技术保存之前的内容. 如何实现双缓冲?使用一个Bitmap对象保留之前的画布即可. package com.example.phonegaptest; import android.content.Context; import android.graphics.Bitmap; i

双缓冲(Double Buffer)原理和使用【转】

转自:http://blog.csdn.net/acs713/article/details/16359551 原文出自:http://blog.csdn.net/xiaohui_hubei/article/details/16319249 一.双缓冲作用            双缓冲甚至是多缓冲,在许多情况下都很有用.一般需要使用双缓冲区的地方都是由于"生产者"和"消费者"供需不一致所造成的.这样的情况在很多地方后可能会发生,使用多缓冲可以很好的解决.我举几个常见

android双缓冲技术实例详解

Android中的SurfaceView类就是双缓冲机制.因此,在进行Android游戏开发时应尽量使用SurfaceView而不要使用View,这样的话效率较高,并且SurfaceView的功能也更加完善.为了更容易的了解双缓冲技术,下面介绍用View实现双缓冲的方法. 在此需要说明一下,双缓冲的核心技术就是先通过setBitmap方法将要绘制的所有的图形绘制到一个Bitmap上,然后再来调用drawBitmap方法绘制出这个Bitmap,显示在屏幕上.其具体的实现代码如下: 先贴出View类

Android采用双缓冲技术实现画板

本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下 1.双缓冲技术的概念 所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制到该View组件,而是先绘制到一个内存中的Bitmap图片上(就是缓冲),等内存中的Bitmap绘制好之后,再一次性将Bitmap绘制到View组件上. 2.Android采用双缓冲实现画板 实现的思路: 1).定义一个内存中图片,将他作为缓冲区Bitmap cacheBitmap =

java中的双缓冲技术

毕业设计有个远程协助功能,得到对方的屏幕后,老是会闪,很是不爽,今天用java的双缓冲技术解决了.代码如下,本类重写了Swing中的JLabel,当Label重绘时,会默认的调用它的update方法,主要用于清除界面,然后update方法会调用paint方法,再把界面画上去,所以我现在update方法中创建了一个Image和Graphics对象Image off_screen_buf和off_screen_gc同时设置其大小和MyLabel对象的大小一样,用于把要画的东东先绘制到后台内存中,然后

使用双缓冲技术实现Android画板应用

双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果. 为什么要使用双缓冲技术?拿Android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没了,所以需要使用双缓冲技术保存之前的内容. 如何实现双缓冲?使用一个Bitmap对象保留之前的画布即可. package com.example.phonegaptest; import android.content.Context; import android.graphics.Bitmap; import and

【求助】关于Java中的双缓冲技术

问题描述 我尝试写一个人物行走的动画.我使用了双缓冲技术,但是屏幕仍然会闪烁,希望大家能够帮我找到其中的错误.代码如下:(1)精灵类packagesprite;importjava.awt.*;importjava.awt.image.*;importjavax.swing.*;publicclassSprite{publicintm_posX=0,m_posY=0;privateImagepic[]=null;privateintmPlayID=0;booleanmFacus=true;pub