从0开发游戏引擎—初始化DirectX

从0开发游戏引擎—初始化DirectX步骤 1 获取我们硬件设备信息 函数 Direct3DCrea 的参数必须是 D3D SDK VERSION 只有如此方能保证应用程序使用正确的头文件

大家好,欢迎来到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

(0)
上一篇 2026-02-04 13:21
下一篇 2026-02-04 13:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信