《DirectX 9.0 3D 游戏开发编程基础》学习笔记#2

很长一段时间没写了,现在补上

博主使用的DirectX SDK版本为June 2010,以下以此版本为例,记录龙书上第二部分第一章中初始化Direct3D的API。

IDirect3D9指针获取,Direct3DCreate9函数原型:

/*
 * DLL Function for creating a Direct3D9 object. This object supports
 * enumeration and allows the creation of Direct3DDevice9 objects.
 * Pass the value of the constant D3D_SDK_VERSION to this function, so
 * that the run-time can validate that your application was compiled
 * against the right headers.
 */

IDirect3D9 * WINAPI Direct3DCreate9(UINT SDKVersion);

获取IDirect3D9对象指针一般代码:

IDirect3D9* _d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

Direct3DCreate9函数执行失败返回空指针,使用时应注意异常处理。

获取设备能力接口IDirect3D9::GetDeviceCaps,函数原型:

STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DCAPS9* pCaps) PURE;

注:PURE STDMETHOD这些都是微软自己定义的宏。

函数入参adapter指定需要获得哪个显卡特性,可使用宏D3DADAPTER_DEFAULT指定为当前显卡;D3DDEVTYPE为枚举变量,一般可指定硬件设备(D3DDEVTYPE_HAL),软件设备(D3DDEVTYPE_REF);D3DCAPS9为外部所需获得特性的结构,调用GetDeviceCaps后会把结果放入该指针所指结构。

创建IDirect3DDevice9对象接口IDirect3D9::CreateDevice,函数原型:

STDMETHOD(CreateDevice)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DDevice9** ppReturnedDeviceInterface) PURE;

其中比较重要的参数是D3DPRESENT_PARAMETERS* pPresentationParameters,该结构参数会指定所创建的Deivce对象的一些特性。

所以一般的Direct3D初始化包括IDirect3D9对象创建,显卡能力检查,IDirect3DDevice9对象创建,一般初始化代码大致为:

bool InitD3D(HWND hWnd)
{
	IDirect3D9 * d3d = Direct3DCreate9(D3D_SDK_VERSION);

	D3DCAPS9 d3dCaps;
	d3d->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dCaps);
	// check caps
	D3DPRESENT_PARAMETERS d3dParam;
	// d3dParam assignment
	IDirect3DDevice9 * d3dDevice;
	d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dParam, &d3dDevice);
}

  

时间: 2024-10-14 00:17:23

《DirectX 9.0 3D 游戏开发编程基础》学习笔记#2的相关文章

<<linux命令行与shell脚本编程大全>>学习笔记(1)

一章初识linux shell 一.什么是linux 1.linux系统可大致划分为四部分: l Linux内核 l GNU工具组件 l 图形化桌面环境 l 应用软件 在linux系统里,这四部分中的每一部分都扮演着一个特别的角色,但如果将他们分开,每一部分都没太大的作用. 1)探究linux内核 Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,必要时分配硬件,有时需要执行软件. 内核基本负责以下四项主要功能: l 系统内存管理 l 软件程序管理 l 硬件设备管理 l 文件系

《Linux命令行与shell脚本编程大全》学习笔记(转)

第一部分:Linux命令行<Linux命令行与shell脚本编程大全> 第一章:初识Linux shell<Linux命令行与shell脚本编程大全> 第二章:走进shell<Linux命令行与shell脚本编程大全> 第三章:基本的bash shell命令<Linux命令行与shell脚本编程大全> 第四章:更多的bash shell命令<Linux命令行与shell脚本编程大全> 第五章:使用Linux环境变量<Linux命令行与she

【持续更新中】Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章

<Linux命令行与Shell脚本编程大全(第3版)>读书笔记 第十二章 使用结构化命令 根据条件使脚本跳过某些命令,这样的命令称为结构化命令(structured command).结构化命令允许改变程序执行的顺序. If-then语句: If command Then Commands Fi 如果if后的command执行退出码是0(也就是执行成功了),then后面的语句就会被执行. 也可以写成: If command; then Commands Fi 注意了,if后的command结果

Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M) 原文地址:https://www.cnblogs.com/pluse/p/9408724.html

《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shell 脚本编程基础:第三部分深入探讨shell 脚本编程的高级内容:第四部分介绍如何在现实环境中使用shell 脚本.本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料. 本书内容全面,语言简练,示例丰富,适合于linux 系统管理员及Linux 爱好者阅读

《Linux命令行与shell脚本编程大全 第3版》

第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81.2   Linux 发行版 121.2.1 核心Linux 发行版 131.2.2 特定用途的Linux 发行版 131.2.3 Linux LiveCD 141.3   小结 15 第2章  走进shell2.1   进入命令行 162.1.1 控制台终端 172.1.2 图形化终端 172.2

《Linux命令行与shell脚本编程大全》23章24章

第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell.但是它并不是唯一的选择,还有其他的shell可以供你选择. 23.1 什么是dash shell 百度百科上说:Dash shell是一个Unix shell,比Bash shell小的多,符合POSIX标准. 下面是书上的: dash shell是作为debian linux发行版的一部分开发的,主要出现在Ubuntu linux发行版中.它是Bourne shell的精简版.所以它并不像bashs

【更新完毕】Linux命令行与Shell脚本编程大全(第3版)读书笔记21-26章

第二十一章 sed进阶 N:将数据流中的下一行加进来创建一个多行组(multiline group)来处理. D:删除多行组中的第一行. P:打印多行组中的第一行. sed '/header/{n ; d}' data.txt 首先匹配有header的行,然后n表示移动到文本的下一行,然后进行删除.然后继续搜索data.txt中包含header的行,继续之前的流程. 加入有个文本的内容如下: [[email protected] ~]# cat data.txt On Tuesday, the

《Linux命令行与Shell脚本编程大全(第3版)》读书笔记

第一章 初始Linux Shell Linux可以划分为4个部分: - Linux内核 - GNU工具 - 图形化桌面环境 - 应用软件 Linux系统的核心是内核.内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件. 内核主要负责以下4种功能: - 系统内存管理 - 软件程序管理 - 硬件设备管理 - 文件系统管理 操作系统内核的主要功能之一就是内存管理.内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存). 内核通过硬盘上的存储空间来

《Linux命令行与shell脚本编程大全》 第六章环境变量

很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息. 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息. 这项特性允许在内存中存储数据,以便程序能轻松访问到它们. 在bash shell中,分两类: 全局变量:对于shell会话和所有生成的子shell都是可见的 局部变量:只对创建的它们的shell可见 6.1.1全局环境变量 查看全局变量,  $env    $printen