zoukankan      html  css  js  c++  java
  • 《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记

    REF设备

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

    D3DDEVTYPE

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

    COM(组件对象模型)

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

    表面

    image

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

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

    1. LockRect 获取指向表面存储区的指针
    2. UnloclRect 释放
    3. GetDesc 得到表面描述信息。

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

    Code Snippet
    1.       D3DSURFACE_DESCsurfaceDesc;
    2.       _surface->GetDesc(&surfaceDesc);
    3.  
    4.       D3DLOCKED_RECTlockedRect;
    5.       _surface->LockRect(&lockedRect,
    6.           0,
    7.           0);
    8.         DWORD * imageData= (DWORD *) lockedRect.pBits;
    9.       for(inti = 0;i<surfaceDesc.Width;i++)
    10.           for(intj = 0;j<surfaceDesc.Height;j++)
    11.           {
    12.               intindex = i * lockedRect.Pitch / 4 + j;//32DWORD4,4
    13.               imageData[index] = 0xffff0000;//red
    14.           }
    15.       _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对象.
  • 相关阅读:
    怎么获取数组中的对象的某一项之和
    原型链
    js的事件循环(Eventloop) 机制/js的宏任务微任务执行顺序
    怎么替换数组中对象的属性
    求对象所有值的和
    sequelize中duplicating:false的使用
    WebSocket
    轮播

    ssl tsl
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/3753577.html
Copyright © 2011-2022 走看看