zoukankan      html  css  js  c++  java
  • 【DirectX】D3D中基本图形绘制(总结)

    IDirect3D* WINAPI Direct3DCreate9(
     UINT SDKVersion         //版本号
    );                              //创建Direct3D9接口对象

    HRESULT IDirect3D::GetDeviceCaps(
     UINT Adapter,           //显卡号(一般为D3DADAPTER_DEFAULT)
     D3DDEVTYPE DeviceType,  //设备类型(一般为D3DDEVTYPE_HAL)
     D3DCAPS9* pCaps         //返回设备功能信息
    );                              //本机显示卡功能检测

    HRESULT IDirect3D::GetAdapterDisplayMode(
     UINT Adapter,           //显卡号
     D3DDISPLAYMODE* pMode   //显示模式
    );                              //获得显卡的显示模式

    typedef struct _D3DDISPLAYMODE{
     UINT Width;             //屏幕像素宽度
     UINT Height;            //屏幕像素高度
     UINT RefreshRate;       //刷新率
     D3DFORMAT Format;       //显卡使用的各种绘图表面格式
    }D3DDISPLAYMODE;                //显示模式结构体

    typedef struct _D3DPRESENT_PARAMETERS_ {
     UINT BackBufferWidth,BackBufferHeight;         //后绘图表面的像素宽高
     D3DFORMAT BackBufferFormat;                    //后绘图表面的各种数据格式(如像素颜色格式)
     UINT BackBufferCount;                          //后绘图表面的数目
     D3DMULTISAMPLE_TYPE MultiSampleType;           //多重采样类型
     DWORD MultiSampleQuality;                      //多重采样品质
     D3DSWAPEFFECT SwapEffect;                      //前后绘图表面的交换方式
     HWND hDeviceWindow;                            //所在的窗口句柄
     BOOL Windowed;                                 //true表示使用窗口;false表示使用全屏
     BOOL EnableAutoDepthStencil;                   //使能自动深度蒙板
     D3DFORMAT AutoDepthStencilFormat;              //自动深度蒙版格式
     DWORD Flags;                                   //后绘图表面可否锁定等标志
     UINT FullScreen_RefreshRateInHz;               //屏幕刷新率(如果使用窗口,则必须设置为0)
     UINT PresentationInterval;                     //前、后绘图表面的最大交换频率
    } D3DPRESENT_PARAMETERS;                               //设备显示属性结构体

    HRESULT IDirect3D::CreateDevice(
     UINT Adapter,                        //显示卡编号
     D3DDEVTYPE DeviceType,               //设备类型
     HWND hFocusWindow,                   //所属窗口句柄
     DWORD BehaviorFlags,                 //设备行为标志
     D3DPRESENT_PARAMETERS* pPresentationParameters,    //显示属性参数
     IDirect3DDevice9** ppReturnedDeviceInterface       //返回的设备接口指针
    );                                           //创建渲染设备

    HRESULT IDirect3DDevice9::CreateVertexBuffer(
     UINT Length,             //顶点缓冲区的大小
     DWORD Usage,             //顶点缓冲区的用法
     DWORD FVF,               //可变的顶点格式
     D3DPOOL Pool,            //顶点缓冲区所使用的内存池类型
     IDirect3DVertexBuffer9** ppVertexBuffer,   //顶点缓冲区的指针
     HANDLE* pSharedHandle    //保留字,设置为NULL
    );                               //创建顶点缓冲区

    HRESULT IDirect3DVertexBuffer9::Lock(
     UINT OffsetToLock,       //锁定的起始字节位置
     UINT SizeToLock,         //锁定字节的大小
     VOID** ppbData,          //返回的顶点缓冲区指针
     DWORD Flags              //锁定标志
    );                               //内存锁定,返回顶点缓冲区指针

    HRESULT IDirect3DDevice9::Clear(
     DWORD Count,               //要清除的绘图表面的矩形区域个数
     const D3DRECT* pRects,     //所清除的绘图表面的区域
     DWORD Flags,               //清除标志
     D3DCOLOR Color,            //清除后的新颜色值
     float Z,                   //所清除的Z-Buffer缓冲区的新Z值(0--1之间)
     DWORD Stencil              //所清除的Stencil缓冲区的新值
    );                                 //清除设备缓冲区数据

    HRESULT IDirect3DDevice9::BeginScene(VOID);          //启动设备管道流水线
    HRESULT IDirect3DDevice9::EndScene(VOID);            //停止设备管道流水线
                                                         //以上两个函数必须成对出现,且3D场景渲染代码必须放到他们中间

    HRESULT IDirect3DDevice9::SetStreamSource(
     UINT StreamNumber,        //管道流水线编号
     IDirect3DVertexBuffer9* pStreamData,    //顶点缓冲区指针
     UINT OffsetInBytes,       //缓冲区数据的偏移字节位置
     UINT Stride               //顶点带宽,一般为顶点结构体的字节大小
    );                                //顶点缓冲区数据装入管道流水线

    HRESULT IDirect3DDevice9::SetFVF(
     DWORD FVF                 //可变顶点格式
    );                                //设置顶点格式

    HRESULT IDirect3DDevice9::DrawPrimitive(
     D3DPRIMITIVETYPE PrimitiveType,   //所采用的3D原始类型
     UINT StartVertex,                 //起始顶点的索引
     UINT PrimitiveCount               //绘制图元个数
    );                                        //绘制基本图元(三角形)

    HRESULT IDirect3DDevice9::Present(
     CONST RECT* pSourceRect,          //一般说明为NULL
     CONST RECT* pDestRect,            //一般说明为NULL
     HWND hDestWindowOverride,         //一般说明为NULL
     CONST RGNDATA* pDirtyRegion       //一般说明为NULL
    );                                        //交换前后绘图表面

  • 相关阅读:
    WPF Caliburn 学习笔记(五)HelloCaliburn
    MSDN 教程短片 WPF 20(绑定3ObjectDataProvider)
    MSDN 教程短片 WPF 23(3D动画)
    比赛总结一
    HDU3686 Traffic Real Time Query System
    HDU3954 Level up
    EOJ382 Match Maker
    UESTC1565 Smart Typist
    HDU3578 Greedy Tino
    ZOJ1975 The Sierpinski Fractal
  • 原文地址:https://www.cnblogs.com/kex1n/p/2145152.html
Copyright © 2011-2022 走看看