zoukankan      html  css  js  c++  java
  • D3D基本框架

     

    创建D3D对象: 

    1 Direct3DCreate9(D3D_SDK_VERSION);
     

    获取显卡显示模式: 

    1 HRESULT GetAdapterDisplayMode(
    2   UINT Adapter, //指定显示卡序列号
    3   D3DDISPLAYMODE *pMode //存储显示模式的指针
    4 ); 

     

     创建D3D设备接口:   

    1 HRESULT CreateDevice(
    2          UINT Adapter,//显卡序列号
    3          D3DXDEVTYPE DeviceType,//D3D设备类型
    4          HWND hFocusWindow,//所属窗口句柄
    5          DWORD BehaviorFlags,//设备进行3D运算方式
    6          D3DPRESENT_PARAMETERS *pPresentionParameters,//用于存储D3D设备相关信息的指针
    7          IDirect3DDevice9 **ppReturnedDeviceInterface//返回D3D设备接口指针的地址
    8          ); 

    第二个参数DeviceType 取值:
    D3DDEVTYPE_HAL //硬件抽象层,通过显示硬件来完成图形渲染工作
    D3DDEVTYPE_REF //参考光栅器,一般用于测试显卡不支持的D3D 功能
    D3DDEVTYPE_SW //用于支持第三方软件
    第四个参数BehaviorFlags 取值:
    D3DCREATE_SOFTWARE_VERTEXPROCESSING //由D3D 软件进行顶点运算(常用)
    D3DCREATE_FPU_PRESERVE //激活双精度浮点运算或浮点运算异常检测,设置该项会降低系统性能
    D3DCREATE_MULTITHREADED //保证D3D 是多线程安全的,设置该项会降低系统性能

    D3DCREATE_MIXED_VERTEXPROCESSING //由混合方式进行顶点运算
    D3DCREATE_HARDWARE_VERTEXPROCESSING //由D3D 硬件进行顶点运算
    D3DCREATE_PUREDEVICE //禁用D3D 的Get*()函数,禁止D3D使用虚拟设备模拟顶点运算

     

    开始渲染和结束渲染:

    1  BeginScene();//开始渲染
    2  ......
    3  实际的渲染工作 
    4  ......
    5  EndScene();//结束渲染 

    注意:
    这两个函数必须成对出现,不允许交错和嵌套的发生,实际的渲染工作在这两个函数的
    中间进行。

     

    清空图形绘制区:

    1  HRESULT Clear(
    2  DWORD Count, //清除的矩形区域数量
    3  const D3DRECT *pRects, //清除的矩形区域数组指针
    4  DWORD Flags, //清除的缓冲区标志,指定清除哪一个缓
    5  冲区
    6  D3DCOLOR Color, //清除后重置的颜色
    7  float Z, //清除后重置的深度值,从0-1.0
    8  DWORD Stencil //重置的模板值
    9  );

    第三个参数Flags 取值(可任意组合):
    D3DCLEAR_STENCIL //模板缓冲区
    D3DCLEAR_TARGET //颜色缓冲区
    D3DCLEAR_ZBUFFER //深度缓冲区

     

    屏幕反转:

    1  HRESULT Present(
    2  CONST RECT *pSourceRect, //复制源的矩形区域指针
    3  CONST RECT *pDestRect, //复制目的地的矩形区域指针
    4  HWND hDestWindowOverride, //D3D 设备窗口句柄
    5  CONST RGNDATA *pDirtyRegion //最小更新区域指针
    6  );

    注意:
    除非D3D 的交换链是用D3DSWAPEFFECT_COPY 的标志创建,在大多数的情况下,此
    函数的各个参数都设置为NULL。

  • 相关阅读:
    C语言学习019:函数指针
    C语言学习018:strdup复制字符串数组
    C语言学习017:malloc和free
    C语言学习016:单链表
    C语言学习015:联合(union)与枚举(enum)
    C语言学习014:结构化数据类型
    C语言学习013:通过make编译C源代码
    C语言学习012:将代码文件分成多个文件
    C语言学习011:带参数的main函数
    C语言学习010:fopen读写文件
  • 原文地址:https://www.cnblogs.com/liwenbin/p/2277520.html
Copyright © 2011-2022 走看看