渲染要进行什么操作,这随着应用技术的深入而多样化和复杂化。
一般来说,即时信息更新部分包括:
1漫游信息的更新:处理即时鼠标事件和键盘事件
由鼠标或键盘触发场景模型的平移,旋转,缩放等操作,以及摄像机的旋转,平移等。
2摄像机信息的更新:摄相机位置,朝向等信息的改变
摄像机的更新直接影响到视图矩阵和投影矩阵的实时更新
3模型信息的更新:模型位置和大小的改变以及模型的渲染
模型的平移矩阵,旋转矩阵,缩放矩阵的改变以至世界矩阵的即时更新
关于模型的渲染方面,则需处理多方面的细节:
先设置渲染状态,再进行打开alpha测试,alpha裁减以及背面剔除和纹理层滤镜的设
置等,接着还需设置材质和纹理等细节。
模型渲染的最后一步:
一般情况下:执行ID3DXBaseMesh接口的 DrawSubset(DWORD AttribId),
AttribId指定要绘制网格的哪个子集,用于将网格中的平面区分为属于一个或多个属性组。
先调用SetStreamSource(StreamNumber, StreamData, ffsetInBytes, tride)该函数把一个顶点缓存
绑定到一个设备数据流,接着执行SetIndices(pIndexData),再执行SetFVF (FVF),最后调用:
打开alpha测试alpha裁减前:
打开alpha测试alpha裁减后:
也可使用另外一种方式:(以下调用的函数均属于IDirect3DDevice9接口)