游戏中地图画法的优化

现在的游戏地图都做的比较大,这样一来我们就需要来优化地图的画法,来提高地图对内存的消耗和游戏速度。
现在通用的都是用一个tile数组来表示地图的。数组中每个值表示一个地图块,一般大小为16*16。

 

1.为了减少在屏幕中绘制地图的数量,在绘制地图时只绘制当前屏幕的部分。
方法:通过限定循环判断的起始点,结束点,来约束循环判断的总次数.
以前的做法是
for(int y=0;y<tile.length;y++)
  for(int x=0;x<tile[y].length;x++){
 if(in_screen(y,x)){
    draw tile[y][x];
 }
}

 

改进做法是只循环显示当前屏幕的部分:
//全局变量
int tile_w; //地图块width;
int tile_h; //地图块height;
int screen_y; //屏幕的y;
int screen_x;//屏幕的x;
int sx1,sx2,sy1,sy2;

 

sx1 = screen_x / tile_w;   //屏幕x在地图的第几块上。
if (sx1 < 0)
  sx1 = 0;

 

sy1 = screen_y / tile_h;  //屏幕y在地图的第几块上。
if (sy1 < 0)
  sy1 = 0;

 

sx2 = (screen_x + screen_w) / tile_w;     //屏幕底边在地图的第几块上。
if ( (screen_x + screen_w) % tile_w != 0)
  sx2 += 1;
if (sx2 > tile_bottom[0].length)
  sx2 = tile_bottom[0].length;

 

sy2 = (screen_y + screen_h) / tile_h;     //屏幕右边在地图的第几块上。
if ( (screen_y + screen_h) % tile_h != 0)
  sy2 += 1;
if (sy2 > tile_bottom.length)
  sy2 = tile_bottom.length;

 

//循环的起点屏幕x所在的地图块,终点是屏幕右边所在的地图块。
for (int y = sy1; y < sy2; y++)
  for (int x = sx1; x < sx2; x++) {
    draw tile[y][x];
  }

 

举例, 如果地图大小为100x100, 单元尺寸为16x16, 屏幕为128x160
则原画法,每次刷新屏幕的循环次数为10000, 其中每次均需进行是否在屏幕内判断,
新画法,循环次数为80, 并且不需进行是否在屏幕内判断.

 

所以改进算法优势明显。特别是在三星系列的机型上。下次我们来继续优化地图。

第1章 绪论 1.1 地理信息系统的概念 1.2 地理信息系统的组成 1.2.1 系统硬件 1.2.2 系统软件 1.2.3 空间数据 1.2.4 应用人员 1.2.5 应用模型 1.3 地理信息系统的功能 1.3.1 基本功能 1.3.1 应用功能 1.4 地理信息系统的发展 1.4.1 GIS发展简史 1.4.2 当代GIS发展动态 参考题 第2章 地理信息系统的空间数据结构和数据库 2.1 空间数据结构 2.1.1 概述 2.1.2 矢量数据结构 2.1.3 栅格数据结构 2.1.4 矢量栅格本体化数据结构 2.1.5 三维数据结构 2.2 GIS的数据模型 2.2.1 概述 2.2.2 层次数据模型 2.2.3 网状数据模型 2.2.4 关系数据模型 2.2.5 对象数据模型 2.2.6 时空数据模型 2.3 空间数据库的设计 2.3.1 数据的管理模式 2.3.2 空间数据库的设计、建立与维护 参考题 第3章 空间数据的采集和质量控制 3.1 概述 3.1.1 GIS的数据源 3.1.2 空间数据采集的任务 3.1.3 研究GIS数据质量的目的和意义 3.2 空间数据的地理参照系和控制基础 3.2.1 空间数据的地理参照系 3.2.2 地图投影 3.3 地理实体分类与数据编码 3.3.1 地理实体的分类 3.3.2 地理实体的编码 3.4 空间数据的采集 3.4.1 几何数据的采集 3.4.2 属性数据的采集 3.4.3 空间数据的检核 3.5 GIS的数据质量 3.5.1 GIS数据质量的内容和类型 3.5.2 研究GIS数据质量的方法 3.5.3 数据处理数据质量的评价 3.5.4 数据处理数据质量的评价 3.6 空间数据标准 3.6.1 空间数据分类标准 3.6.2 空间数据交换标准 3.6.3 我国空间数据交换格式 3.6.4 GIS空间元数据 3.6.5 空间数据的互操作和Open GIS规范 参考题 第4章 空间数据的处理 4.1 矢量数据拓扑关系的自动建立 4.1.1 链的组织 4.1.2 结点匹配 4.1.3 检查多形是否闭合 4.1.4 建立多边形 …… 第5章 空间查询与空间分析 第6章 空间信息的可视化 第7章 地理信息系统的应用 第8章 地理信息系统的开发与评价 附录 主要参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值