《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记
REF设备
参考光栅设备,他能以软件计算方式完全支持Direct3D Api。借助Ref设备,可以在代码中使用那些不为当前硬件所支持的特性,并对这此特性进行测试。
D3DDEVTYPE
在程序代码中,HAL设备用值D3DDEVTYPE_HAL来表示。该值是一个枚举变量。REF设备用D3DDEVTYPE_REF来表示。这种类型非常重要,你需要铭记,因为在创建设备的时候,我们必须指定使用哪种设备类型。
COM(组件对象模型)
创建COM接口时不可以使用c++关键字new。此外使用完接口,应调用Release 方法。
表面

表面的宽度和高度用像素来度量。跨度则用字节来度量。
在代码中IDirect3DSurface9来描述表面,它的重要方法如下:
- LockRect 获取指向表面存储区的指针
- UnloclRect 释放
- GetDesc 得到表面描述信息。
如下代码实现了锁定表面存储区以及将每一个像素设为红色的代码。
- D3DSURFACE_DESCsurfaceDesc;
- _surface->GetDesc(&surfaceDesc);
- D3DLOCKED_RECTlockedRect;
- _surface->LockRect(&lockedRect,
- 0,
- 0);
- DWORD * imageData= (DWORD *) lockedRect.pBits;
- for(inti = 0;i<surfaceDesc.Width;i++)
- for(intj = 0;j<surfaceDesc.Height;j++)
- {
- intindex = i * lockedRect.Pitch / 4 + j;//32DWORD4,4
- imageData[index] = 0xffff0000;//red
- }
- _surface->UnlockRect();
多重采样
多重采样一种平滑技术,用于防止快状效应。
内存池
表面和其它的Direct3D资源可以放入许多类型的内存池中,内存池的类型可以D3DPOOL枚举类型来表示 。包括:
- D3DPOOL_DEFAULT
- D3DPOOL_MANAGE
- D3DPOOL_SYSTEMMEM
- D3DPOOL_SCRATCH
交换链和页面置换
Direct3D维护着一个表面 的集合。该集合通常由现从到三个表面组成,称为交换链。该集合用IDirect3DSwapChain9来表示 。
完成绘制功能的程序结构为:
- 在后台缓存进行绘制
- 提交后台缓存
- 回到步骤1
深度缓存
只含有像素尝试信息而不含图像数据的表面。
深度缓存用于计算每一个像素深度值来测试内容是否被显示。
Direct3D的初始化
- 获取接口IDirct3D9的指针该接口用于获取系统中物理硬件设备的信息创建接口IDirect3DDevice9,该接口是一个c++对象,代表了我们用来显示的3d图形的物理硬件设备。
- 检查设备性能(D3DCAPS9)
- 初始化D3DPRESENT_PARAMETERS结构的一个实例。该接口用于指定IDirect3Device9的特性。
- 创建IDirect3Device9对象.
《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记的更多相关文章
- 【笔记】《DirectX 9.0 3D游戏开发编程基础》:Direct3D初始化
Direct3D初始化大概分为4个步骤: 1.获取接口IDirect3D9的指针.(Direct3DCreate9函数调用). 该接口用户获取系统中物理硬件设备的信息并创建接口IDirect3DDev ...
- 《DirectX 9.0 3D游戏开发编程基础》必备的数学知识 读书笔记
最近在看游戏导航源码,但是看了几天感觉看不懂.里面全是一些几何运算,以及一些关于3d方面的知识.发现自己缺少3d这方面的知识,正好也想研究一下3d游戏开发的基本原理,于是决定买本书看看了,后来在ope ...
- 《DirectX 9.0 3D游戏开发编程基础》 第二章 绘制流水线 读书笔记
模型的表示 场景:物品或模型的集合 任何物品都可以用三角形网络逼近表示.我们经常用以下术语描述三角形网络:多边形(polygons).图元(primitives).网络几何单元(mesh geomet ...
- DirectX12 3D 游戏开发与实战第一章内容
DirectX12 3D 第一章内容 学习目标 1.学习向量在几何学和数学中的表示方法 2.了解向量的运算定义以及它在几何学中的应用 3.熟悉DirectXMath库中与向量有关的类和方法 1.1 向 ...
- DirectX12 3D 游戏开发与实战第九章内容(上)
仅供个人学习使用,请勿转载. 9.纹理贴图 学习目标: 学习如何将局部纹理映射到网格三角形上 探究如何创建和启用纹理 学会如何通过纹理过滤来创建更加平滑的图像 探索如何使用寻址模式来进行多次纹理贴图 ...
- 自己在完第一遍STL和Directx 9.0 游戏开发编程基础书后的体会
如果一本书看一遍就能看懂,说明书对自己相对容易,没有必要在去看第二遍,但是对于大多数书籍,都有自己陌生的知识,看完一遍无法理解的地方,说明就是自己知识点最薄弱的,最需要去理解的地方,一旦自己理解了这些 ...
- DirectX12 3D 游戏开发与实战第二章内容
矩阵代数 学习目标 理解矩阵及其相关运算的定义 探究为何能把向量和矩阵的乘法视为一种线性组合 学习单位矩阵.转置矩阵.行列式以及矩阵的逆等概念 逐步熟悉DirectXMath库中提供的关于矩阵计算的类 ...
- DirectX12 3D 游戏开发与实战第九章内容(下)
仅供个人学习使用,请勿转载.谢谢! 9.纹理贴图 学习目标 学习如何将局部纹理映射到网格三角形中 探究如何创建和启用纹理 学会如何通过纹理过滤来创建更加平滑的图像 探索如何使用寻址模式来进行多次贴图 ...
- DirectX9:基础篇 第一章 初始化Direct3D
一.简介 二.Direct3D类 1.创建D3D类 IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion); //Direct3D类的创建 IDirec ...
随机推荐
- cobbler自动重装
如果物理机上想更换操作系统 yum -y install http://mirrors.163.com/centos/7/extras/x86_64/Packages/epel-release-7-9 ...
- HDU 6342.Problem K. Expression in Memories-模拟-巴科斯范式填充 (2018 Multi-University Training Contest 4 1011)
6342.Problem K. Expression in Memories 这个题就是把?变成其他的使得多项式成立并且没有前导零 官方题解: 没意思,好想咸鱼,直接贴一篇别人的博客,写的很好,比我的 ...
- CodeForces 32C Flea
题目链接:http://codeforces.com/problemset/problem/32/C 本文链接:http://www.cnblogs.com/Ash-ly/p/5513436.html ...
- 2018 ACM-ICPC 沈阳网络赛
Problem A Problem B Problem C Problem D Problem E Problem F Problem G Problem H Problem I Problem J ...
- 模板—字符串—KMP(单模式串,单文本串)
模板—字符串—KMP(单模式串,单文本串) Code: #include <cstdio> #include <cstring> #include <algorithm& ...
- Express下使用formidable实现POST表单上传文件并保存
Express下使用formidable实现POST表单上传文件并保存 在上一篇文章中使用formidable实现了上传文件,但没将它保存下来. 一开始,我也以为是只得到了文件的相关信息,需要用fs. ...
- leetcode191 Number of 1 Bit
题意:一个int类型正整数,求它的二进制形式有多少个1 思路:除2递归,可以解出,看了discuss里面有个解更牛,一行结束战斗,是用n&(n-1)再递归,其实并不是很懂怎么想出来这么做的,可 ...
- catalina_home与catalina_base
CATALINA_HOME是Tomcat的安装目 录,CATALINA_BASE是Tomcat的工作目录. 如果我们想要运行Tomcat的多个实例,但是不想安装多个Tomcat软件副本.那么我们可以配 ...
- MetaWeblog是什么
MetaWebBlog API(MWA)是一个Blog程序接口标准,允许外部程序来获取或者设置Blog的文字和熟悉.他建立在XMLRPC接口之上,并且已经有了很多的实现. 所以现在很多博客系统都支持这 ...
- SQLSERVER LATCH WINDBG
https://mssqlwiki.com/2012/09/07/latch-timeout-and-sql-server-latch/