Direct3D初始化代码含义
// Desc: 初始化Direct3D //----------------------------------------------------------------------------- HRESULT InitD3D( HWND hWnd ) { //创建Direct3D对象, 该对象用来创建Direct3D设备对象 if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; //设置D3DPRESENT_PARAMETERS结构, 准备创建Direct3D设备对象 D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //创建Direct3D设备对象 if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice ) ) ) { return E_FAIL; } return S_OK; }
HRESULT :函数返回值。如果这个函数是执行完返回的话将包含具有实际意义的数据,如果立即返回则包含状态信息--发送成功与否,并不能说明执行的如何。
return E_FAIL;
struct D3DPRESENT_PARAMETERS{
UINT BackBufferWidth;//指定后台缓冲区的宽度
UINT BackBufferHeight;//指定后台缓冲区高度
D3DFORMAT BackBufferFormat;//指定后台缓冲区的像素格式,设置为D3DFMT_UNKNOWN时,后台缓冲区与当前显卡的显示像素格式相同
UINT BackBufferCount;//指定后台缓冲区的数量。该值可以为0、1、2、3,其中0和1时都表示创建一个后台缓冲区
D3DMULTISAMPLE_TYPE MultiSampleType;//指定多重采样类型,用于图形反锯齿
DWORD MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;//指定系统如何将后台缓冲区的内容复制到前台缓冲区,该成员是D3DSWAPEFFECT枚举类型
HWND hDeviceWindow;//指定图形绘制窗口
BOOL Windowed;//标识图形以窗口方式还全屏方式显示
BOOL EnableAutoDepthStencil;//如果要使用Z缓冲,则把它设为TRUE
D3DFORMAT AutoDepthStencilFormat;//如果不使用深度缓冲,那么这个参数将没有用。如果启动了深度缓冲,那么这个参数将为深度缓冲设定缓冲格式
DWORD Flags;//可以设置为0或D3DPRESENTFLAG_LOCKABLE_BACKBUFFER
UINT FullScreen_RefreshRateInHz;//指定显示适配器刷新屏幕的速率。以窗口显示设置为0;以全屏显示,取IDirect3D9::EnumAdapterModes()返回值
UINT PresentationInterval;//指定后台缓存与前天缓存的最大交换频率
};
ZeroMemory(PVOID Destination,SIZE_T Length)函数:ZeroMemory宏用0来填充一块内存区域。参数有两个,