DWORD DWORD DWORD WORD WORD DWORD D3DVALUE GUID WORD WORD DWORD DWORD DWORD DWORD DWORD
dwStencilCaps; dwFVFCaps; dwTextureOpCaps;
wMaxTextureBlendStages; wMaxSimultaneousTextures;
dwMaxActiveLights; dvMaxVertexW;
deviceGUID; wMaxUserClipPlanes; wMaxVertexBlendMatrices;
dwVertexProcessingCaps; dwReserved1; dwReserved2; dwReserved3; dwReserved4;
}D3DDEVICEDESC7,*LPD3DDEVICEDESC7;
这个结构的成员定义如下:
? dwDevCaps 包含了辨认装置特性的旗标。
? dpcLineCaps 和 dpcTriCaps D3DPRIMCAPS结构中定义该装置支持了画线和三
角形基本形状。
? dwDeviceRenderBitDepth 装置的绘制位深度(rendering bit depth)。本成员可能
是一个或多个DirectDraw位深度常数(如DDBD_8、DDBD_16、DDBD_24或DDBD_32)。
? dwDeviceZBufferBitDepth 代表装置的深度-缓冲区位深度,本成员可能是一个或
多个DirectDraw位深度(如DDBD_8、DDBD_16、DDBD_24或DDBD_32)。
? dwMinTextureWidth、dwMinTextureHeight 代表装置的最小贴图宽度和高度。
? dwMaxTextureWidth、dwMaxTextureHeight 代表装置的最大贴图宽度和高度。
? dwMaxTextureRepeat 包含了后正规化贴图索引(postnormalized texture
indices)的整数(非分数)位的全部范围。如果
D3DDEVCAPS_TEXREPEATNOTSCALEDBYSIZE位值被设定,装置会延迟贴图尺寸的缩放,一直套用到贴图地址模式为止。如果未设定时,装置会在内插前先依据贴图尺寸(细部的最大程度)去缩放贴图索引。
? dwMaxTextureAspectRatio 表示硬件支持的最大贴图比例;本值通常是2的幂方。
? dwMaxAnisotropy 代表D3DRENDERSTATE_ANISOTROPY绘图状态的最大有效
值。
? dvGuardBandLeft、dvGuardBandTop、dvGuardBandRight和
dvGuardBandBottom 定义监视guard-band裁切区域的屏幕空间坐标。落在此区块内但不在检视埠区内的坐标会自动被裁切。
? dvExtentsAdjust 要让延伸区向外扩展以容纳柔边核心时所需要调整的像素数目。
? dwStencilCaps 包含了哪些可支持屏蔽缓冲区(stencil-buffer)作业的旗标。
? dwFVFCaps 代表弹性顶点格式特性。
? dwTextureOpCaps 包含了各种旗标值的组合,这些旗标值是用来描述装置所支持
的贴图指令。
? wMaxTextureBlendStages 表示装置支持的最大贴图混合阶层(texture blending
stages)。
? wMaxSimultaneousTextures 表示可同时附加在装置的贴图连缩阶层上的贴图最大
值。
? dwMaxActiveLights 表示可以同时发生作用的最大光源数。
? dvMaxVertexW 表示装置可支持的最大w深度值。
? deviceGUID 表示可辨识该装置的GUID。
? wMaxUserClipPlanes 表示装置支持的使用者定义裁切面的最大值。这个成员的范
围值可以从0到D3DMAXUSERCLIPPLANES。利用
IDirect3DDevice7::GetClipPlane和IDirect3DDevice7::SetClipPlane方法可以控制
使用者定义裁切面。
? wMaxVertexBlendMatrices 表示当执行多矩阵顶点混色(multimatrix vertex
blending)时,装置可以应用的最多矩阵数目。
? dwVertexProcessingCaps 表示装置的顶点处理。
? dwReserved1 到 dwReserved4 保留用途。
您可以看得出来,这里提供了许多的特性。您必须依您的程序需求决定要检查哪些项目。不过,您应该尽可能地多运用他们,以创造出更真实的3D环境。举例来说,本书所提到的RoadRage程序用到了烟雾和α混色来提供尽可能真实的成像和动态3D世界。 您也需要提供使用者管道来挑选其它可用的装置(或模式),这样他/她才能去改变初始的默认值(例如,RGB vs. HAL;全屏幕vs. 窗口模式;一个较低分辨率模式,如800×600 vs. 640×480;等等)。
以下的程序会去处理当使用者从 File 菜单选择「改变装置/模式」的动作。它产生一个对话盒包括了可用的装置和模式,允许使用者挑选想要的装置和模式,并且切换过去。这里是一些需要加入档案d3dapp.cpp中的CD3DApplication::MsgProc成员函式的程序代码,来处理使用者选择菜单的动作:
case IDM_CHANGEDEVICE: }
return 0;
//显示「选择装置」的对话盒 if (m_bActive &&m_bReady) { { }
Pause(FALSE);
if(FAILED(hr =Change3DEnvironment())) return 0;
Pause(TRUE); if
(SUCCEEDED(D3DEnum_UserChangeDevice(&m_pDeviceInfo)))
图4-1表示在选择一个新装置或模式时,程序会产生一个下拉式菜单。
图4-1 选择新装置或模式
图4-2则是当使用者作了选择之后程序所产生的对话盒。使用者可以挑选想要的装置(例如,主要装置或是其它辅助装置)和模式。
图4-2 Change Device对话盒
本章中新增到CD3DApplication::MsgProc成员函式中的新case指令,会去呼叫D3DEnum_UserChangeDevice来产生一个对话盒显示所有系统可用的装置和模式,并且可让使用者挑选一个新的。参考上面的图,对话盒的上方会有一个清单方块列出每一个装置,而对话盒的下方会有一个清单方块列出所有模式。 D3DEnum_UserChangeDevice程序如下:
//-------------------------------------------------------------------
//名称:D3DEnum_UserChangeDevice //说明:跳出一个对话盒让使用者选择 // ---
HRESULT D3DEnum_UserChangeDevice(D3DEnum_DeviceInfo**ppDevice)
新装置
//----------------------------------------------------------------
{ }
这个程序会呼叫Windows DialogBoxParam函式,并从您所指定的对话盒范本资源中 建立一个典型的对话盒。它会用到一个回传函式在lpDialogFunc参数中。除非回传函式呼叫EndDialog函式来终止这个典型的对话盒,否则这个典型的对话盒不会传回控制权。呼叫DialogBoxParam时所指定的ChangeDeviceProc回传会处理在这个装置选择对话盒中的所有Windows讯息。
if(IDOK ==DialogBoxParam((HINSTANCE)GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_CHANGEDEVICE), GetForegroundWindow(),
return S_OK;
ChangeDeviceProc,(LPARAM)ppDevice)) return E_FAIL;
//-------------------------------------------------------------------
//名称:ChangeDeviceProc
//说明:「选择装置」对话盒的Windows讯息处理函式 //
//-------------------------------------------------------------------
static BOOL CALLBACK ChangeDeviceProc(HWND hDlg,UINT uiMsg, WPARAM wParam,LPARAM lParam) {
//取得对列举装置清单的存取权 D3DEnum_DeviceInfo*pDeviceList; DWORD dwNumDevices;
D3DEnum_GetDevices(&pDeviceList,&dwNumDevices); static D3DEnum_DeviceInfo**ppDeviceArg; static D3DEnum_DeviceInfo*pCurrentDevice; static DWORD dwCurrentMode; static BOOL bCurrentWindowed; static BOOL bCurrentStereo;
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新IT计算机设定Direct X应用程序中的Direct 3D (3)全文阅读和word下载服务。
相关推荐: