欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2025/3/17 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 《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 得到表面描述信息。
  • 如下代码实现了锁定表面存储区以及将每一个像素设为红色的代码。

    Code Snippet
  •       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对象.
  • 出处:http://www.cnblogs.com/zhangdongsheng/ 作者:张东升

    总结

    以上是生活随笔为你收集整理的《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。