《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 ...
随机推荐
- [jquery]判断checkbox是否选中
if ($("#id").is(":checked"))
- POJ 1240 Pre-Post-erous! && East Central North America 2002 (由前序后序遍历序列推出M叉树的种类)
题目链接:http://poj.org/problem?id=1240 本文链接:http://www.cnblogs.com/Ash-ly/p/5482520.html 题意: 通过一棵二叉树的中序 ...
- linux历史命令
"忘记历史的Linux用户注定要输入很多信息.” 这也让强有力的历史命令(包括Bash shell的历史变体)不仅在援引之前执行命令而不需重新输入它们时有用,在调用其它很少用到的命令时也有用 ...
- 【Docker】基本命令使用介绍
# docker命令行学习 ## docker run- docker run --help:老实说这条最管用了- docker run -it:交互模式,允许控制台输出 - docker run - ...
- MySQL笔记之视图的使用详解
原文:http://www.jb51.net/article/36363.htm 1.什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门 ...
- Codeforces 914 C Travelling Salesman and Special Numbers
Discription The Travelling Salesman spends a lot of time travelling so he tends to get bored. To pas ...
- [CF842E]Nikita and game
[CF842E]Nikita and game 题目链接: CF842E 博客地址: [CF842E]Nikita and game - skylee 题目大意: 一棵树初始只有一个编号为\(1\)的 ...
- 5.6(java学习笔记) queue
一.queue接口 queue的中文意思是队列,是一种以先进先出方式处理数据的集合. 队列还提供额外的插入.提取和检查操作.这些方法都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值(根据操 ...
- 动态NAT地址转换
1.配置路由器的端口ip地址(注意外网和内网ip地址的设置) Router(config)#inter f0/0 Router(config-if)#ip add 192.168.1.1 255.25 ...
- SQLSERVER WINDBG调试:mssqlwiki.com
https://mssqlwiki.com/2012/10/16/sql-server-exception_access_violation-and-sql-server-assertion/ SQL ...