D3D中的地形绘制基础(5) 摘要: 该例子是用一个包含高度信息的RAW文件创建一个地形,纹理和光源。用方向键在地形上行走。
D3D中的地形绘制基础(4) 摘要:
构造了一个地形以后,我们想要有移动摄像机的能力,以便模拟在地形上行走的效果。我们需要调整摄像机的高度,这依赖于地形部分的知识,好的,继续往下看。我们首先需要找到照相机所在的方格的位置,并给出x轴和z轴坐标,cTerrain::get_height函数能做到这些,它能提供x轴、z轴坐标参数,返回摄像机需要被设置在地形上的高度值,现在看实现部分。
D3D中的地形绘制基础(3) 摘要:
cTerrain::generate_texture方法会调用cTerrain::light_terrain,顾名思义,光照使地形更接近于现实。当我们已经计算完地形纹理以后,我们只需要计算阴影系数(shade
factor),使一个定义了光源的地形区域变亮或变暗。你会惊讶于为什么我们照亮地图却没有让Direct3D来做。我们自己来计算有三个好处:
D3D中的地形绘制基础(2) 摘要:
在图13.4中,计算三角形网格上的顶点,我们只是在开始产生顶点的地方,一行一行的生成顶点数据,直到结束为止。单元格的顶点与顶点之间有一块空白区域,这会让我们取得x、z坐标,但y坐标是什么呢?得到y坐标很容易,当读取高度图数据结构时会找到对应的入口。
注意:这个操作使用一个巨大的顶点缓存去保存所有地形上的所有顶点。这可能会引起硬件局限性的问题。例如:3D设备都预设了最大图元数和最大顶点索引值。检查D3DCAPS9结构的MaxPrimitiveCount和MaxVertexlndex成员来获得你的设备的限定值。
D3D中的地形绘制基础(1) 摘要:
实际上,地形网格不比三角形网格复杂,图13.1.(a)所示,网络的每个顶点指定了高度,格子模型用这种方式显示从山脉到河流的平滑过渡。图13.1
(b),模拟自然地形。当然,我们可以用漂亮的纹理表现沙石地,绿色的山丘。图13.1.(c)雪山效果。