先看图片
http://hi.youkuaiyun.com/attachment/201109/7/979141_1315404194Eh6m.jpg
每个块的图片由4周围4个脚的地貌计算得出。
算法如下。
1.地貌编号0-5,低编码的可以被高编码的覆盖。
2.每种地形图片中,设编码1-15.(0保留,和15其实是一回事),魔兽里面还有16-31的随机填充块,这里简化掉。
用位代表本块覆盖的角。比如左上,右上,左下,右下编码为,1,2,4,8
由此,1-15代表了地形的各种覆盖方向.
3.计算本块图层方法。
排序4个角,并去掉重复的数字,存为数组A,此时留下n个不同的地貌编号。(n=1到4)
for(int i=0;i<n;++i)
计算等于A[i]角的编码和,存到tile[i];
4.绘制时,对每个tile,绘制0-n层。
比如左上(0,0)块,其周围4个角的地貌编码为
0, 0
5, 5
所以tile[0]=0x00+0;tile[1]=0x500+12
最下一层你要计算编码也可以,我这里这么做是为了防止底层遮盖不完全,留出空洞。所以底层完全填充。
因为每个块只有4个角,所以每块贴图次数是1到4,d3d的话,4层贴图搞定。