《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记

REF设备


参考光栅设备,他能以软件计算方式完全支持Direct3D
Api。借助Ref设备,可以在代码中使用那些不为当前硬件所支持的特性,并对这此特性进行测试。

D3DDEVTYPE

在程序代码中,HAL设备用值D3DDEVTYPE_HAL来表示。该值是一个枚举变量。REF设备用D3DDEVTYPE_REF来表示。这种类型非常重要,你需要铭记,因为在创建设备的时候,我们必须指定使用哪种设备类型。

COM(组件对象模型)

创建COM接口时不可以使用c++关键字new。此外使用完接口,应调用Release 方法。

表面

表面的宽度和高度用像素来度量。跨度则用字节来度量。

在代码中IDirect3DSurface9来描述表面,它的重要方法如下:

  1. LockRect 获取指向表面存储区的指针

  2. UnloclRect 释放

  3. GetDesc 得到表面描述信息。

如下代码实现了锁定表面存储区以及将每一个像素设为红色的代码。

Code
Snippet

  1. D3DSURFACE_DESCsurfaceDesc;

  2. _surface->GetDesc(&surfaceDesc);
  3. D3DLOCKED_RECTlockedRect;

  4. _surface->LockRect(&lockedRect,

  5. 0,

  6. 0);

  7. DWORD * imageData= (DWORD *) lockedRect.pBits;

  8. for(inti = 0;i<surfaceDesc.Width;i++)

  9. for(intj = 0;j<surfaceDesc.Height;j++)

  10. {

  11. intindex = i * lockedRect.Pitch / 4 +
    j;//32DWORD4,4

  12. imageData[index] =
    0xffff0000;//red

  13. }

  14. _surface->UnlockRect();

多重采样


多重采样一种平滑技术,用于防止快状效应。

内存池

表面和其它的Direct3D资源可以放入许多类型的内存池中,内存池的类型可以D3DPOOL枚举类型来表示 。包括:

  1. D3DPOOL_DEFAULT

  2. D3DPOOL_MANAGE

  3. D3DPOOL_SYSTEMMEM

  4. D3DPOOL_SCRATCH

交换链和页面置换

Direct3D维护着一个表面 的集合。该集合通常由现从到三个表面组成,称为交换链。该集合用IDirect3DSwapChain9来表示 。

完成绘制功能的程序结构为:

  1. 在后台缓存进行绘制

  2. 提交后台缓存

  3. 回到步骤1

深度缓存

只含有像素尝试信息而不含图像数据的表面。

深度缓存用于计算每一个像素深度值来测试内容是否被显示。

Direct3D的初始化


  1. 获取接口IDirct3D9的指针该接口用于获取系统中物理硬件设备的信息创建接口IDirect3DDevice9,该接口是一个c++对象,代表了我们用来显示的3d图形的物理硬件设备。

  2. 检查设备性能(D3DCAPS9)

  3. 初始化D3DPRESENT_PARAMETERS结构的一个实例。该接口用于指定IDirect3Device9的特性。

  4. 创建IDirect3Device9对象.

《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记,布布扣,bubuko.com

时间: 2024-10-12 17:07:17

《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记的相关文章

《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 ob

DirectX12 3D 游戏开发与实战第一章内容

DirectX12 3D 第一章内容 学习目标 1.学习向量在几何学和数学中的表示方法 2.了解向量的运算定义以及它在几何学中的应用 3.熟悉DirectXMath库中与向量有关的类和方法 1.1 向量 向量是一种兼具大小和方向的量,具有这两种的量都称为向量值物理量,在几何学中我们一般用一条有向线段来表示一个向量 1.1.1 向量与坐标系 前提:计算机无法直接处理以几何方法表示的向量,所以需要寻求一种用数学方法来表示向量 在这里我们会引入一种3D空间坐标系,通过平移操作使向量的尾部位于原点,然后

Android+3D游戏开发技术详解与典型案例

 内容导读 本书共分两篇,第一篇介绍了Android 3D游戏开发的基础知识,主要对OpenGL ES的相关内容进行了介绍. 章 名主 要 内 容 第1章 英雄还看今朝-Android简介本章介绍了市场上主流的手机平台,同时也分析了未来手机平台的发展趋势及Android平台的前景 第2章 数风流人物-当前流行游戏类型简介本章以分类的方式简要地介绍了当前流行的游戏的玩法,游戏的视觉效果,游戏的设计及<仙剑>等著名游戏的历史 第3章 不积跬步,无以至千里-游戏开发基础知识本章初步介绍了游戏开发的基

Android开发经典书籍下载——《Android 4高级编程》《疯狂Android讲义》《Android应用开发详解(郭宏志)》《Android应用案例开发大全》《Android 3D游戏开发技术》

这是我收集的关于android开发方面的经典书籍,高清PDF电子版,可以在我的百度网盘免费下载,希望对需要的朋友有帮助. 目录: <Android 4高级编程>(附完整源代码) <疯狂Android讲义> <Android应用开发详解(郭宏志)> <Android应用案例开发大全> <Android 3D游戏开发技术> <Android内核剖析 柯元旦> <深入理解Android  卷1> <深入理解Android

html5游戏开发-零基础开发《圣诞老人送礼物》小游戏

开言: 以前lufy前辈写过叫" HTML5游戏开发-零基础开发RPG游戏"的系列文章,在那里面我学习了他的引擎以及了解了游戏脚本.自从看了那几篇文章,我便对游戏开发有了基本的认识.今天我也以零基础为视点,为大家讲述如何开发一款简单的游戏.希望大家看了这篇文章,能使你对理解游戏开发有帮助. 你可以先测试一下游戏: http://lufylegend.com/lufylegend_developers/yorhom_Christmas/index.html 1,如何进行游戏开发 1.1游

HTML5游戏开发技术基础整理

随着HTML5标准最终敲定,HTML5将有望成为游戏开发领域的的热门平台.HTML5游戏能够运行于包括iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是目前跨平台应用开发的最佳实施方案.本文系根据[HML5 Canvas游戏开发实战]一书中的内容整理而成,是了解和学习HTML5游戏开发的基础内容,希望能够帮助到那些和博主一样致力于游戏开发的朋友们! JavaScript中的面向对象编程 对于游戏开发来说,面向对象编程(OOP)是一种重要而且必要的方法,所以在了解HTML5游戏

Unity 3D游戏开发引擎:最火的插件推荐

摘要:为了帮助使用Unity引擎的开发者制作更完美的游戏,我们精心挑选了十款Unity相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJoystick.UnIDE.Tile Based Map and Nav.FX Maker.Toon shader.Top-Down Assets Mobile和83 Explosion Sound Effects. 作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升

学期总结之3D游戏开发

这学期我上了3D游戏开发课,因为我一直对3D游戏感兴趣,所以想了解一下开发所需要的技术.这门课从人工智能,光照模型,贴图,凹凸纹理上对3D游戏进行了一个初步的介绍.这门课主要介绍的是OSG,一个基于OpenGL的图形引擎,它的主要特点是树结构的“场景图”,即将3D场景描述为一棵树,比如一个笔的模型,可以描述为笔和笔帽,还可以继续细分. 它的主要特点为:高性能:采用场景图形的数据组织方式,并支持投影.隐藏面.微小场景的剔除. LOD .状态管理等. 高效率:OSG几乎提供了OpenGL所有功能的封

转游戏开发做的第一款手机网游的经历和体会

转游戏开发大半年以来,做过的游戏不多,刚开始就写单机版的游戏,不过也不多.后来就接触手机版网游,第一款游戏就是超级英雄,目前这款游戏还在升级维护当中,首次发布就是五月初,第一个月的收入就过千万.关于这款游戏直接看截图效果吧! 以上就是有关该款游戏的截图,有喜欢这款游戏可以下载试玩下,有想学的也可以下载看看交流下经验. 我以前是学C#,主要做桌面类型的软件会的语言也不多,也用过C++.在去年年底就接触到了cocos2d-x,了解到它是跨平台的然后就决心转手游开发了,初期阶段就看书,自己做些东西,也