大家好,欢迎来到IT知识分享网。
始化DirectX步骤
Opengl和DirectX的区别
初始化DirectX
(1)(以防万一-)安装DirectX
(2)获取编译好的DirectX文件和初始化代码文件
在微信公众号.上点击学习资料获取网盘地址
(3)新建win32空项目
(4)添加DirectX路径
(5)在链接器重设置输入
(6)添加代码
把文件中代码添加到项目中
(7)运行
VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
初始化DirectX四部曲
创建窗口和消息循环代码复习
HAL和REF
HAL—硬件抽象层直接与硬件对话
REF—参考光栅设备(reference rasterizer device)
但是注意,REF无法发布给最终用户。此外,REF速度非常缓慢,在
COM(组件对象模型)
初始化Direct3D四部曲
::MessageBox前面::的作用
可以确保调用的是 Windows API 中的 MessageBox 函数,而不是某个其他命名空间中的同名函数。
这段代码是 Direct3D 应用程序的初始化部分,负责创建 Direct3D 设备并配置其属性。
步骤 1:创建 IDirect3D9 对象
使用 Direct3DCreate9 函数创建 IDirect3D9 对象,该对象用于管理 Direct3D 设备和资源。
步骤 2:检查硬件顶点运算支持
使用 GetDeviceCaps 方法检查硬件设备的性能和功能。根据硬件支持的顶点处理能力,选择相应的顶点处理模式(硬件或软件)。
步骤 3:填充 D3DPRESENT_PARAMETERS 结构
填充 D3DPRESENT_PARAMETERS 结构体,该结构描述了要创建的设备的呈现参数,如后台缓冲区的大小、格式、刷新率等。
步骤 4:创建设备
使用 CreateDevice 方法创建 Direct3D 设备,指定所需的适配器、设备类型、窗口句柄等参数,并传递填充好的呈现参数结构体。
CreateDevice 方法会尝试创建与所选设备和参数匹配的 Direct3D 设备。
在这个过程中,::MessageBox 用于显示失败的消息框,:: 用于指定全局作用域,确保调用的是 Windows API 中的 MessageBox 函数。
详细参数介绍
// Step 1: Create the IDirect3D9 object. //步骤1:获取我们硬件设备信息 //函数Direct3DCreate9的参数必须是D3D_SDK_VERSION,只有如此方能保证应用程序使用正确的头文件。如果该函数调用失败,将返回一 //个NULL指针 IDirect3D9* d3d9 = 0; d3d9 = Direct3DCreate9(D3D_SDK_VERSION); if( !d3d9 ) {
::MessageBox(0, "Direct3DCreate9() - FAILED", 0, 0); return false; } // Step 2: Check for hardware vp. //步骤2:检查硬件是否支持顶点运算 D3DCAPS9 caps; //UINT Adapter:指定物理显卡的序号 //D3DDEVTYPE DeviceType:指定设备类型(例如硬件设备D3DDEVTYPE_HAL)或软件设备(D3DDEVTYPE_REF) //D3DCAPS9 *pCaps:返回已初始化的设备性能结构实例 d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps); int vp = 0; if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) //硬件顶点运算 vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; else vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; // Step 3: Fill out the D3DPRESENT_PARAMETERS structure. //步骤3:填充D3DPRESENT_PARAMETERS 结构体 D3DPRESENT_PARAMETERS d3dpp; //后台缓存中表面的宽度,单位为像素 d3dpp.BackBufferWidth = width; //后台缓存中表面的宽度,单位为像素 d3dpp.BackBufferHeight = height; //后台缓存的像素格式(如:32为像素格式:D3DFMT_A8R8G8B8) d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; //所需使用的后台缓存的个数,通常指定为1,表明我们仅需要一个后台缓存 d3dpp.BackBufferCount = 1; //后台缓存所使用的多重采样类型 d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; //多重采样的质量水平 d3dpp.MultiSampleQuality = 0; //枚举类型的一个成员。该枚举类型指定了交换链中的缓存的页面置换方式。指定为D3DSWAPEFFECT_ DISCARD时效率最高。 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //与设备相关的窗口句柄。指定了所要进行绘制的应用程序窗口。 d3dpp.hDeviceWindow = hwnd; //为true时,表示窗口模式。为false时,表示全屏模式 d3dpp.Windowed = windowed; //设置为true,则Direct3D自动创建并维护深度缓存或模板缓存。 d3dpp.EnableAutoDepthStencil = true; //深度缓存或模板缓存的像素格式(例如,用24位表示深度并将8位保留供模板缓存使用, d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; //-些附加的特性。可以指定为0 (无标记) d3dpp.Flags = 0; //刷新频率。如果想使用默认的刷新频率,可将该参数指定为D3DPRESENT_ _RATE_ _DEFAULT. d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; //PresentationInterval : D3DPRESENT集 合的一个成员。D3DPRESENT- -一INTERVAL_ IMMEDIATE: 立即提交 d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; // Step 4: Create the device. //步骤4:创建设备 hr = d3d9->CreateDevice( //UINT Adapter:指定我们希望用已创建的IDirect3DDevice9对象代表哪块物理显卡。 默认是主显卡 D3DADAPTER_DEFAULT, // primary adapter //指定需要使用的设备类型(如,硬件设备D3DDEVTYPE_ HAL) deviceType, // device type //窗口句柄 hwnd, // window associated with device //顶点运算 vp, // vertex processing //填充D3DPRESENT_ PARAMETERS 结构体对象 &d3dpp, // present parameters //返回创建的设备 device); // return created device
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/109834.html





