Direct3D是一种底层框架API,它能让我们利用3D硬件来渲染3D世界.
如图结构:
Application ------> Direct3D -----> HAL ----> Graphics Device
HAL:hardware abstration layer.硬件抽象层. D3D不能直接应用于图形硬件,因此D3D要求硬件
厂商去实现HAL.
REF Device:D3D 提供了 REF设备,它用软件模拟了所有的 D3D 调用接口, 仅仅调试用,不会发布给最终用户.
D3DDEVTYPE: 一种枚举类型,如D3DDEVTYPE_HAL.D3DDEVTYPE_REF.
COM:为了使D3D独立于语言,因此使用D3D就是使用COM接口.
表面:D3D的表面就是一些像素点阵. IDirect3DSurface9接口,
IDirect3DSurface9->LockRect 获得一个指向表面内存的指针
IDirect3DSurface9->UnLockRect 与LockRect相对,成对出现
IDirect3DSurface9->GetDesc 填充D3DSURFACE_DESC接口,返回表面信息
Multisampling:全屏抗锯齿. D3DMULTISAMPL_TYPE. 用IDirect3D9::CheckMultisampletype
像素格式: D3DFORMAT枚举来指定. D3DFMT_R8G8B8等.
内存池:D3DPOOL枚举来指定:
D3DPOOL_DEFAULT,D3DPOOL_MANAGED,D3DPOOL_SYSTEMMEM,D3DPOOL_SCRATCH.
交换面和页面切换:IDirect3DSwapChain接口来表示
深度缓冲:D3DFMT_D24S8,D3DFMT_D32
顶点处理:3D学顶点基础,提供软件方式和硬件方式两种方式进行处理.
设备能力:D3DCAPS9,检测硬件支持的3D处理能力.如D3DCAPS9::DevCaps9
_____________________________________________________________________
初始化D3D过程:
1、获得一个IDirect3D9的接口,这个接口用于获得物理设备信息以及创建一个IDirect3DDevice9接口。
它是代表我们显示3D图象的物理设备的C++对象。
2、检测设备的技术特性。主要搞清楚其是否支持顶点处理,如果支持我们就可以创建IDirect3DDevice9对象了。
3、初始化一个D3DPRESENT_PARAMETERS的实例,包括很多数据成员,通过这些数据结构成员来指定将要创建的IDirect3DDevice9接口特性。
4、创建一个基于D3DPRESENT_PARAMETERS的IDirect3DDevice实例