主题:[讨论]2D斜视角游戏中地形贴图的思考
一般,1我们先在离屏页面hdc上通过BitBlt方式贴上单个地形图块(准备图片),2然后把离屏页面上的内容用for循环计算各个地形图块位置后BltFast贴到后备缓存上,3最后翻页显示。
问题是,在整个程序执行中总是要调用第二步进行循环、计算的操作,而对这些地形、物品之类的位置相对固定的东西反复循环、计算是否很没必要?而且耗时?并且在移动地图时很难在循环里计算各个地形图块的偏移量!
我的想法是:由于第一步准备图片的过程只加载一次,所以直接把第二步的操作放到第一步里,在第二步时只要把整个离屏页面BltFast过来,在移动地图时只要改变BltFast的相应参数既可。这不是提高了效率么?
但是这样做有个很重要的问题,就是在离屏页面hdc上无法用DDR的颜色键来透明图片,这样会造成菱形地图块的拼接区被覆盖掉,一个办法就是另外制作单个地形图块的蒙板图,其他的物品图、墙壁图等也一样。然后再利用BitBlt函数的参数特点来做透明图。这样做显然加大了程序资源文件的大小,但是提高了速度,我想游戏应该以速度为优先考虑的。
另外,我的菱形地图的贴图方式没有按常规的斜视角贴图计算方式,而是按照单数、双数行的各自规律:单数行从(0,0)位置正常贴图,双数行的第一个的贴图坐标X轴缩进 (地图块宽)/2 ,Y轴增加 (地图块高)/2
本人初学DirectxDraw,不知我的想法是否正确,望大家指点!
问题是,在整个程序执行中总是要调用第二步进行循环、计算的操作,而对这些地形、物品之类的位置相对固定的东西反复循环、计算是否很没必要?而且耗时?并且在移动地图时很难在循环里计算各个地形图块的偏移量!
我的想法是:由于第一步准备图片的过程只加载一次,所以直接把第二步的操作放到第一步里,在第二步时只要把整个离屏页面BltFast过来,在移动地图时只要改变BltFast的相应参数既可。这不是提高了效率么?
但是这样做有个很重要的问题,就是在离屏页面hdc上无法用DDR的颜色键来透明图片,这样会造成菱形地图块的拼接区被覆盖掉,一个办法就是另外制作单个地形图块的蒙板图,其他的物品图、墙壁图等也一样。然后再利用BitBlt函数的参数特点来做透明图。这样做显然加大了程序资源文件的大小,但是提高了速度,我想游戏应该以速度为优先考虑的。
另外,我的菱形地图的贴图方式没有按常规的斜视角贴图计算方式,而是按照单数、双数行的各自规律:单数行从(0,0)位置正常贴图,双数行的第一个的贴图坐标X轴缩进 (地图块宽)/2 ,Y轴增加 (地图块高)/2
本人初学DirectxDraw,不知我的想法是否正确,望大家指点!