D3D 基本函数,枚举等

来源:互联网 发布:tensorflow 二次开发 编辑:程序博客网 时间:2024/05/16 19:42

LPDIRECT3D9  m_pD3D = Direct3DCreate9( D3D_SDK_VERSION );//得到IDirect3D9*指针
///////////////////////////////////////////////////////////////////////////////////////////////
typedef struct_D3DDISPLAYMODE
{
   UNIT         Width;
   UNIT         Height;
   UNIT         RefreshRate;
   D3DFORMAT    Format;     //颜色格式
}D3DDISPLAYMODE

GetAdapterDisplayMode
(
  UINT Adapter,  //显示卡序号
  D3DDISPLAYMODE* pMode,//存储返回显示模式信息值的指针
);

D3DDISPLAYMODE d3ddm;
m_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT,&d3ddm );//查询显示卡的显示模式
/////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DPRESENT_PARAMETERS_//D3D设备相关信息
{
    UINT                BackBufferWidth;//全屏幕式后备缓冲的宽度
    UINT                BackBufferHeight;//全屏幕式后备缓冲的高度
    D3DFORMAT           BackBufferFormat;//后备缓冲的格式
    UINT                BackBufferCount;//后备缓冲数目
    D3DMULTISAMPLE_TYPE MultiSampleType;//全屏抗锯齿类型
    DWORD               MultiSampleQuality;//全屏抗锯齿质量等级
    D3DSWAPEFFECT       SwapEffect;//交换缓冲类型
    HWND                hDeviceWindow;//设备窗口句柄
    BOOL                Windowed;//全屏或窗口
    BOOL                EnableAutoDepthStencil;//激活深度缓冲
    D3DFORMAT           AutoDepthStencilFormat;//深度缓冲格式
    DWORD               Flags;
    UINT                FullScreen_RefreshRateInHz;//显示器刷新率
    UINT                PresentationInterval;//图像最大刷新速度
} D3DPRESENT_PARAMETERS;

typedef enum _D3DSWAPEFFECT
{
    D3DSWAPEFFECT_DISCARD           = 1,//后台缓存复制到前台缓存后,清除后台缓存内容
    D3DSWAPEFFECT_FLIP              = 2,//后台缓存复制后,保留后台缓存原内容不变,当后台缓存数量>1时使用
    D3DSWAPEFFECT_COPY              = 3,//后台缓存复制后,保留后台缓存原内容不变,当后台缓存数量=1时使用

    D3DSWAPEFFECT_FORCE_DWORD       = 0x7fffffff
} D3DSWAPEFFECT;

typedef enum _D3DDEVTYPE//D3D设备类型
{
    D3DDEVTYPE_HAL         = 1,//尽可能使用这个
    D3DDEVTYPE_REF         = 2,//一般被用来测试显示卡不支持的Direct3D功能
    D3DDEVTYPE_SW          = 3,//用以支持等3方软件

    D3DDEVTYPE_NULLREF     = 4,

    D3DDEVTYPE_FORCE_DWORD  = 0x7fffffff
} D3DDEVTYPE;

#define D3DCREATE_FPU_PRESERVE                  0x00000002L//激活双精度浮点运算或浮点运算异常检测,设置该项会降低系统功能
#define D3DCREATE_MULTITHREADED                 0x00000004L//支持多线程绘制,设置该项会降低系统功能
#define D3DCREATE_PUREDEVICE                    0x00000010L//禁用Direct3D的Get*()函数,禁止Direct3D使用虚拟设备模拟顶点运算
#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L//由Direct3D软件进行顶点运算
#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L//由Direct3D硬件进行顶点运算
#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L//由Direct3D软件和硬件进行顶点运算

HRESULT CreateDevice(
  UINT   Adapter,   //显示卡序号
  D3DDEVTYPE  DeviceType,   //Direct3D设备类型
  HWND  hFocusWindow,   //所属窗口句柄
  DWORD  BehaviorFlags,   //Direct3D设备进行3D运算的方式
  D3DPRESENT_PARAMETERS *pPresentationParameters,//存储Direct3D设备相关信息的变量地址
  IDirect3DDevice9 **ppReturnedDeviceInterface //返回Direct3D设备接口指针的地址
);

typedef struct _D3DPRESENT_PARAMETERS_
{
    UINT                BackBufferWidth; //后台缓存的宽度
    UINT                BackBufferHeight; //后台缓存的高度
    D3DFORMAT           BackBufferFormat; //指定BackBuffer的像素格式
    UINT                BackBufferCount; //指定BackBuffer数量
 
    D3DMULTISAMPLE_TYPE MultiSampleType; //指定多重采样类型
    DWORD               MultiSampleQuality; //

    D3DSWAPEFFECT       SwapEffect;  //指定了系统如何将后台缓冲区的内容拷贝带前台缓存的屏幕显示
    HWND                hDeviceWindow;  //图形绘制所在的窗口句柄,等于NULL时,表示当前激活的窗口 
    BOOL                Windowed;  //true窗口,false全屏
    BOOL                EnableAutoDepthStencil; //
    D3DFORMAT           AutoDepthStencilFormat; //
    DWORD               Flags;   //

    UINT                FullScreen_RefreshRateInHz;//图形以全屏方式显示时的屏幕刷新率
    UINT                PresentationInterval; //图形以全屏方式显示时的前后台缓存的交换频率
} D3DPRESENT_PARAMETERS;
/////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT IDirect3DDevice9::Clear
(
 DWORD Count,  //重置的矩形区域数量
 const D3DRECT* pRect, //重置的矩形区域数组指针
 DWORD Flags,  //重置缓冲区标志,指定重置哪一个缓冲区值
 D3DCOLOR Color,  //重置的颜色值
 float Z,  //重置的深度值,最远为1.0f,最近为0.0f
 DWORD Stencil  //重置的模板值
)

#define D3DCLEAR_TARGET            0x00000001l  //颜色缓冲区
#define D3DCLEAR_ZBUFFER           0x00000002l  //深度缓冲区
#define D3DCLEAR_STENCIL           0x00000004l  //模板缓冲区

m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );//把要用到的缓冲区初始化
///////////////////////////////////////////////////////////////////////////////////////////////////
m_pd3dDevice->BeginScene();
m_pd3dDevice->EndScene();//要成对出现
//////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::Present
(
 const RECT* pSourceRect, //复制源的矩形区域指针
 const RECT* pDestRect,  //复制目标的矩形区域指针
 HWND hDestWindowOverride, //Direct3D设备所属窗口句柄
 const RGNDATA* pDirityRegion //最小更新区域指针
)

m_pd3dDevice->Present( NULL, NULL, NULL, NULL );//将后台缓冲区的数据复制到前台缓冲区
/////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::CreateVertexBuffer//顶点缓冲区创建
(
 UINT Length,  //顶点缓冲区大小
 DWORD Usage,  //顶点缓冲区属性
 DWORD FVF,  //顶点格式
 D3DPOOL Pool,  //顶点缓冲区内存位置
 IDirect3DVertexBuffer9** ppVertexBuffer, //顶点缓冲区指针位置
 HANDLE* pHandle  //保留参数
)

Usage缓冲区属性宏:
#define D3DUSAGE_WRITEONLY          (0x00000008L)//只写属性,不能进行读操作,设置该属性可以提高系统性能
#define D3DUSAGE_SOFTWAREPROCESSING (0x00000010L)//当设置属性时,表示使用软件进行顶点运算,否则使用硬件进行顶点运算
#define D3DUSAGE_DONOTCLIP          (0x00000020L)//禁用裁减,表示顶点缓冲区中的顶点不进行裁减
#define D3DUSAGE_POINTS             (0x00000040L)//使用顶点缓冲区绘制点
#define D3DUSAGE_RTPATCHES          (0x00000080L)//使用顶点缓冲区绘制曲线
#define D3DUSAGE_NPATCHES           (0x00000100L)//使用顶点缓冲区绘制N-patches曲线

typedef enum _D3DPOOL
{
    D3DPOOL_DEFAULT                 = 0,//顶点缓冲区尽可能存在于显示内存中
    D3DPOOL_MANAGED                 = 1,//由Direct3D系统自动调度顶点缓冲区内存位置
    D3DPOOL_SYSTEMMEM               = 2,//顶点缓冲区位于计算机系统内存中
    D3DPOOL_SCRATCH                 = 3,//顶点缓冲区位于计算机临时内存中,这种类型的顶点缓冲区不能直接用于渲染操作,只能进行内存加锁,拷贝等操作

    D3DPOOL_FORCE_DWORD             = 0x7fffffff
} D3DPOOL;
/////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::Lock
(
 UINT OffsetToLock, //加锁内存起始地址
 UING SizeToLock, //加锁内存大小
 VOID** ppbData,  //返回内存指针地址
 DWORD Flags  //加锁属性
)

Flags//加锁属性
0           //缺省值
#define D3DLOCK_NO_DIRTY_UPDATE    0x00008000L//在缺省状态下,对缓存区加锁会对该区域设置一个Dirty标记。该属性将不对该区域设置Dirty标记,当对缓冲区有特殊需要时使用
#define D3DLOCK_READONLY           0x00000010L//设置缓冲区为只读属性
#define D3DLOCK_DISCARD            0x00002000L//更新整个缓冲区
#define D3DLOCK_NOOVERWRITE        0x00001000L//保证不覆盖缓冲区数据,设置该属性可以立即返回内存指针,提高系统性能
#define D3DLOCK_NOSYSLOCK          0x00000800L//在加锁过程中系统可进行其他操作
#define D3DLOCK_DONOTWAIT          0x00004000L//

HRESULT  IDirect3DDevice9::UnLock()//对顶点缓冲区的内存操作必须通过Lock()和UnLock()来实现
///////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::SetStreamSource//将顶点缓冲区和渲染数据流链接
(
 UINT  StreamNumber,   //渲染数据流序号
 IDirect3DVertexBuffer9* pStreamData, //进行绑定链接的顶点缓冲区指针
 UINT OffsetInBytes,   //进行绑定链接的渲染数据流的起始位置
 UINT Stride,    //渲染数据流中一个顶点所占的内存大小
)
//////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::SetFVF//声明当前的渲染数据流中的灵活顶点格式
(
 DWORD FVF  //渲染数据流中的灵活顶点格式
)
////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::DrawPrimitive//绘制当前的渲染数据流中的图元至后台缓冲区
(
 D3DPRIMITIVETYPE PrimitiveType, //图元类型
 UINT   StartVector, //绘制的起始顶点索引值
 UINT   PrimitiveCount //绘制的图元数量
)

typedef enum _D3DPRIMITIVETYPE {
    D3DPT_POINTLIST             = 1,//所要绘制的图元是一些点
    D3DPT_LINELIST              = 2,//所要绘制的图元是一些线段
    D3DPT_LINESTRIP             = 3,//所要绘制的图元是连接的线段
    D3DPT_TRIANGLELIST          = 4,//所要绘制的图元是一些离散的三角形
    D3DPT_TRIANGLESTRIP         = 5,//所要绘制的图元是一些相连的三角形
    D3DPT_TRIANGLEFAN           = 6,//这种类型用4个点画的2个三角形可以保证都是顺时针或都是逆时针的
    D3DPT_FORCE_DWORD           = 0x7fffffff, /* force 32-bit size enum */
} D3DPRIMITIVETYPE;
//////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::CreateIndexBuffer//创建索引缓冲区
(
 UINT length,  //指明想要创建的索引缓冲区的大小
 DWORD Usage,  //指明索引缓冲区属性
 D3DFORMAT Format, //指明索引数组的元素格式
 D3DPOOL Pool,  //顶点缓冲区内存位置
 IDirect3DIndexBuffer9** ppIndexBudder //指出想要创建的索引缓冲区指针位置
 HANDLE* pHandle  //保留
)
/////////////////////////////////////////////////////////////////////////////////////////////
IDirect3DIndexBuffer9::Lock()
IDirect3DIndexBuffer9::UnLock()
/////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  SetIndices//设置当前绘制的索引数组
(
 IDirect3DIndexBuffer9* pIndexData //欲设置的索引缓冲区
)
////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::DrawIndexedPrimitive//绘制当前的索引数组
(
 D3DPRIMITIVETYPE Type, //表示将要绘制的图元类型
 INT BaseVertexIndex, //表示将要绘制的索引缓冲区的起始地址
 UINT MinIndex,  //表示索引数组中的最小索引值
 UINT NumVertices, //表示将要绘制的索引数组中的顶点数目
 UINT StartIndex, //表示从索引数组中的第几个元素开始绘制
 UINT PrimitiveCount //表示将要绘制的图元数目
)
/////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  IDirect3DDevice9::SetTransform//设置Direct3D顶点变换矩阵
(
 D3DTRANSFORMASTATETYPE Statr, //
 CONST D3DMATRIX *pMatrix, //指向变换矩阵的内存地址
)
////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  SetViewport//设置视区变换的视区信息
(
 CONST D3DVIEWPORT9* pViewport
)
//////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixIdentity( D3DXMATRIX *pOut );//创建一个单位矩阵
//////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixTranslation//设置平移矩阵
(
 D3DXMATRIX *pOut,
 FLOAT x,
 FLOAT y,
 FLOAT z
);
m_pd3dDevice->SetTransform( D3DTS_WORLD, &pOut );
///////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *WINAPI D3DXMatrixRotationX( D3DXMATRIX *pOut, FLOAT Angle )//绕着X轴旋转
D3DXMATRIX *WINAPI D3DXMatrixRotationY( D3DXMATRIX *pOut, FLOAT Angle )//绕着Y轴旋转
D3DXMATRIX *WINAPI D3DXMatrixRotationZ( D3DXMATRIX *pOut, FLOAT Angle )//绕着Z轴旋转
m_pd3dDevice->SetTransform( D3DTS_WORLD, &pOut );
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
D3DXMATRIX *D3DXMatrixScaling//设置缩放矩阵
(
 D3DXMATRIX *pOut,
 FLOAT x,
 FLOAT y,
 FLOAT z
)
m_pd3dDevice->SetTransform( D3DTS_WORLD, &pOut );
/////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixMultiply//矩阵相乘
(
 D3DXMATRIX *pOut,
 CONAT D3DXMATRIX *pM1,
 CONST D3DXMATRIX *pM2
)
m_pd3dDevice->SetTransform( D3DTS_WORLD, &pOut );
/////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixLookAtLH//设置观察矩阵
(
 D3DXMATRIX *pOut, //生成的观察矩阵存放地址
 CONST D3DXVECTOR3 *pEye,//观察点位置坐标
 CONST D3DXVECTOR3 *pAt, //被观察点位置坐标
 CONST D3DXVECTOR3 *pUp //虚拟相机的向上向量,通常为(0,1,0)
)
m_pd3dDevice->SetTransform( D3DTS_VIEW, &pOut );
/////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixOrthoLH//设置正交投影矩阵(相机与投影平面垂直)
(
 D3DXMATRIX *pOut, //生成的正交投影矩阵存放地址
 FLOAT w,  //取景体积宽度
 FLOAT h,  //取景体积高度
 FLOAT znear,  //去景体积距离观察点的最近距离
 FLOAT zfar,  //去景体积距离观察点的最远距离
)
m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &pOut );
//////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixPerspectiveFovLH//设置透视投影矩阵(远处的物体在投影面上的成像被缩小了)
(
   D3DXMATRIX *pOut, //生成的透视投影矩阵存放地址
  FLOAT fovy,  //在y轴上的成像角度
  FLOAT Aspect,  //截头体的纵横比
  FLOAT zn,  //截头体距离相机的最近距离
  FLOAT zf  //截头体距离相机的最远距离
);
m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &pOut );
///////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX* WINAPI D3DXMatrixInverse//获取矩阵逆矩阵
(
  D3DXMATRIX *pOut,
 FLOAT *pDeterminant,
 CONST D3DXMATRIX *pM
);
/////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct D3DVIEWPORT9//视区结构体
{
    DWORD X;   //视区左上角x坐标,StartX
    DWORD Y;   //视区左上角y坐标,StartY
    DWORD Width;  //视区宽度
    DWORD Height;  //视区高度
    float MinZ;   //视区内景物的最小深度值,0~1.0f之间,一般设为0.0f
    float MaxZ;   //视区内景物的最大深度值,0~1.0f之间,一般设为1.0f
} D3DVIEWPORT9, *LPD3DVIEWPORT9;

m_pd3dDevice->SetViewport( D3DVIEWPORT9 *vp);//设置Direct3D的视区

RECT rect;
GetClientRect(hWnd,&rect);//api函数
D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = rect.right;
vp.Height = rect.bottom;
vp.MinZ = 0.0f;
vp.MzxZ = 1.0f;
m_pd3dDevice->SetViewport(&vp);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  GetTransform//获取坐标变换矩阵
(
 D3DTRANSFORMSTATETYPE State,  //表示获得矩阵的类型
 D3DMATRIX *pMatrix   //获得矩阵的内存地址
)

State类型值
D3DTS_WORLD  //世界矩阵
D3DTS_VIEW  //观察矩阵
D3DTS_PROJECTION //投影矩阵
D3DTS_TEXTURE0
.............  //纹理层0-7的坐标矩阵
D3DTS_TEXTURE0
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  m_pd3dDevice->GetViewport//获取当前设置的视区矩阵
(
 D3DVIEWPORT9 pViewport
);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DLIGHTTYPE//光照类型
{
    D3DLIGHT_POINT          = 1,  //点光源
    D3DLIGHT_SPOT           = 2,  //聚光灯
    D3DLIGHT_DIRECTIONAL    = 3,  //方向光
    D3DLIGHT_FORCE_DWORD    = 0x7fffffff,
} D3DLIGHTTYPE;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DLIGHT9//光照属性
{
    D3DLIGHTTYPE    Type;            //光照类型
    D3DCOLORVALUE   Diffuse;         //漫反射光照模型的颜色
    D3DCOLORVALUE   Specular;        //镜面反射光照模型的颜色
    D3DCOLORVALUE   Ambient;         //环境光照模型的颜色
    D3DVECTOR       Position;        //光源在世界空间的3维坐标
    D3DVECTOR       Direction;       //光的方向只在定义方向光和聚光灯时使用
    float           Range;           //光的范围,方向光无这属性
    float           Falloff;         //光的内外锥形衰退,聚光灯特有
    float           Attenuation0;    //距离衰减系数
    float           Attenuation1;    //距离衰减系数
    float           Attenuation2;    //距离衰减系数
    float           Theta;           //聚光灯内部锥形角度
    float           Phi;             //聚光灯外部锥形角度
} D3DLIGHT9;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DMATERIAL9//材质属性
(
    D3DCOLORVALUE   Diffuse;        //漫反射光的镜面反射系数
    D3DCOLORVALUE   Ambient;        //环境光的镜面反射系数
    D3DCOLORVALUE   Specular;       //镜面反射光的镜面反射系数
    D3DCOLORVALUE   Emissive;       //这个是被用来给表面添加颜色,它使得物体看起来就象是它自己发出的光一样
    float           Power;          //指定锐利的镜面高光;它的值是高光的锐利值
) D3DMATERIAL9;

HRESULT  SetMaterial//设置当前材质属性
(
 CONST D3DMATERIAL9 *pMaterial;
);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  Setlight  //设置光照
(
 DWORD Index,  //取值0-7,表示设置第1~8个灯光
 CONST D3DLIGHT9 *pLight //指向D3DLIGHT9结构,包含需要设置的Direct3D的光照属性值
);

HRESULT  LightEnable  //开关光照
(
 DWORD LightIndex, //取值0-7,表示设置第1~8个灯光
 BOOL  bEnable  //启用或禁用LightIndex选择的灯光
);
////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  D3DXCreateTextureFromFile //创建纹理
(
 LPDIRECT3DDEVICE9 pDevice, //有效的3D设置指针
 LPCTSTR pSreFile,  //图形文件的路径及文件名
 LPDIRECT3DTEXTURE9 *ppTexture //存储3D纹理的指针地址
);
/////////////////////////////////////////////////////////////////////////////////////////////////////////
m_pD3D->CheckDeviceFormat//查询当前设备是否支持DXT纹理压缩
(
 UINT Adapter,
 D3DDEVTYPE DeviceType,
 D3DFORMAT AdapterFormat,
 DWORD Usage,
 D3DRESOURCETYPE RType,
 D3DFORMAT CheckFormat
)

BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat )
{
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                              D3DDEVTYPE_HAL,
                              AdapterFormat,
                              0,      
                              D3DRTYPE_TEXTURE,   
                              TextureFormat);
    return SUCCEEDED( hr );
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXCreateTextureFromFileEx  //创建纹理扩充方法
(
 LPDIRECT3DDEVICE9 pDevice, //有效的3D设置指针
 LPCTSTR pSreFile,  //图形文件的路径及文件名
 UINT Width,   //指定纹理宽度
 UINT Height,   //指定纹理高度
 UINT MipLevel,  //指定渐进纹理序列级数
 DWORD Usage,   //纹理使用方式,一般为0
 D3DFORMAT Format,  //指定纹理图形格式
 D3DPOOL Pool,   //纹理存放的内存类型,一般为0
 DWORD Fiher,   //纹理过滤方式
 DWORD MipFiher,  //自动生成的纹理序列过滤方式
 D3DCOLOR ColorKey,  //设置透明色
 D3DXIMAGE_INFO *pSreInfo, //图形文件信息存放地址,可设为0
 PALETTEENTRY *pPalene,  //调色版存储地址
 LPDIRECT3DTEXTURE9 *ppTexture //存储3D纹理的指针地址
)
////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  SetTextrue   //指定纹理
(
 DWORD Stage,   //指定关联的纹理层
 IDirect3DBaseTextrue9 *pTexture //IDirect3D纹理接口指针
)
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  SetTextureStageState  //控制纹理渲染状态
(
 DWORD Stage,   //指定当前设置的贴图纹理层ID
 D3DTEXTURESTAGESTATETYPE Type, //纹理渲染状态类型枚举值
 DWORD Value   //纹理渲染状态值
)
////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DTEXTUREOP
{
    D3DTOP_DISABLE              = 1,      //禁止该纹理颜色输出
    D3DTOP_SELECTARG1           = 2,      //将该纹理层第1个混合参数直接输出Color(RGBA)=Arg1
    D3DTOP_SELECTARG2           = 3,   //将该纹理层第2个混合参数直接输出Color(RGBA)=Arg2

    D3DTOP_MODULATE             = 4,      //将2个混合参数相乘后输出Color(RGBA)=Arg1*Arg2
    D3DTOP_MODULATE2X           = 5,      //Color(RGBA)=(Arg1*Arg2)<<1
    D3DTOP_MODULATE4X           = 6,      //Color(RGBA)=(Arg1*Arg2)<<2

    D3DTOP_ADD                  =  7,   //Color(RGBA)=Arg1+Arg2
    D3DTOP_ADDSIGNED            =  8,   //Color(RGBA)=Arg1+Arg2-0.5
    D3DTOP_ADDSIGNED2X          =  9,   //Color(RGBA)=(Arg1+Arg2-0.5)<<1
    D3DTOP_SUBTRACT             = 10,   //Color(RGBA)=Arg1-Arg2
    D3DTOP_ADDSMOOTH            = 11,   //Color(RGBA)=Arg1+Arg2 - Arg1*Arg2

    D3DTOP_BLENDDIFFUSEALPHA    = 12, // iterated alpha
    D3DTOP_BLENDTEXTUREALPHA    = 13, // texture alpha
    D3DTOP_BLENDFACTORALPHA     = 14, // alpha from D3DRS_TEXTUREFACTOR

    D3DTOP_BLENDTEXTUREALPHAPM  = 15, // texture alpha
    D3DTOP_BLENDCURRENTALPHA    = 16, // by alpha of current color

    D3DTOP_PREMODULATE            = 17,     // modulate with next texture before use
    D3DTOP_MODULATEALPHA_ADDCOLOR = 18,     // Arg1.RGB + Arg1.A*Arg2.RGB
                                            // COLOROP only
    D3DTOP_MODULATECOLOR_ADDALPHA = 19,     // Arg1.RGB*Arg2.RGB + Arg1.A
                                            // COLOROP only
    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,  // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
                                            // COLOROP only
    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,  // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
                                            // COLOROP only

    D3DTOP_BUMPENVMAP           = 22, // per pixel env map perturbation
    D3DTOP_BUMPENVMAPLUMINANCE  = 23, // with luminance channel

    D3DTOP_DOTPRODUCT3          = 24,

    D3DTOP_MULTIPLYADD          = 25, // Arg0 + Arg1*Arg2
    D3DTOP_LERP                 = 26, // (Arg0)*Arg1 + (1-Arg0)*Arg2

    D3DTOP_FORCE_DWORD = 0x7fffffff,
} D3DTEXTUREOP;
/////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DTEXTURESTAGESTATETYPE//纹理渲染状态类型枚举值
{
    D3DTSS_COLOROP        =  1, //指定纹理层得颜色混合方法,Value值属于D3DTEXTUREOP枚举类型。Value等于D3DTOP_DISABLE,表示禁止当前纹理层颜色输出;
    //Value等于D3DTOP_SELECTARG1或者D3DTOP_SELECTARG2,表示将颜色混合的第1个或第2个参数颜色输出;
    //Value等于D3DTOP_MODULATE,表示将颜色混合的第1个和第2个参数相乘输出
    D3DTSS_COLORARG1      =  2, //颜色混合的第一个参数
    D3DTSS_COLORARG2      =  3, //颜色混合的第2个参数
    D3DTSS_ALPHAOP        =  4, //指定纹理层的Alpha混合方法
    D3DTSS_ALPHAARG1      =  5, //Alpha混合的第一个参数
    D3DTSS_ALPHAARG2      =  6, //Alpha混合的第2个参数
    D3DTSS_BUMPENVMAT00   =  7, /* float (bump mapping matrix) */
    D3DTSS_BUMPENVMAT01   =  8, /* float (bump mapping matrix) */
    D3DTSS_BUMPENVMAT10   =  9, /* float (bump mapping matrix) */
    D3DTSS_BUMPENVMAT11   = 10, /* float (bump mapping matrix) */
    D3DTSS_TEXCOORDINDEX  = 11, //该纹理层使用的纹理坐标集得索引
    D3DTSS_BUMPENVLSCALE  = 22, //绘制凹凸花纹物体时的缩放参数值
    D3DTSS_BUMPENVLOFFSET = 23, //绘制凹凸花纹物体时的平移参数值
    D3DTSS_TEXTURETRANSFORMFLAGS = 24, //控制纹理坐标转换标志
    D3DTSS_COLORARG0      = 26, /* D3DTA_* third arg for triadic ops */
    D3DTSS_ALPHAARG0      = 27, /* D3DTA_* third arg for triadic ops */
    D3DTSS_RESULTARG      = 28, /* D3DTA_* arg for result (CURRENT or TEMP) */
    D3DTSS_CONSTANT       = 32, /* Per-stage constant D3DTA_CONSTANT */

    D3DTSS_FORCE_DWORD   = 0x7fffffff, /* force 32-bit size enum */
} D3DTEXTURESTAGESTATETYPE;
///////////////////////////////////////////////////////////////////////////////////////////////
D3DTSS_COLORARG1和D3DTSS_COLORARG2可指定的纹理混合参数
#define D3DTA_SELECTMASK        0x0000000f  // 该状态在设置纹理参数时不起作用
#define D3DTA_DIFFUSE           0x00000000  // 像素的漫反射颜色值
#define D3DTA_CURRENT           0x00000001  // 前一个纹理层得输出颜色值
#define D3DTA_TEXTURE           0x00000002  // 当前纹理层颜色
#define D3DTA_TFACTOR           0x00000003  // 参数值为函数SetRenderStater()通过D3DRS_TEXTUREFACTOR设置的参数值
#define D3DTA_SPECULAR          0x00000004  // 参数值为像素的镜面反射颜色值
#define D3DTA_TEMP              0x00000005  // 参数值存储在一个临时寄存器中
#define D3DTA_CONSTANT          0x00000006  // 参数值为一个常量值
#define D3DTA_COMPLEMENT        0x00000010  // 该参数必须与以上任意一个参数同事设置,表示用1减去原参数
#define D3DTA_ALPHAREPLICATE    0x00000020  // 该参数必须与以上任意除(D3DTA_COMPLEMENT)一个参数同时设置,表示将原参数的alpha值复制到R,G,B中
//////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT  SetSamplerState //设置纹理采样类型
(
 DWORD  Sampler, // 指定纹理采样属性的纹理层ID
 D3DSAMPLERSTATYPE Type, // 纹理采样属性类型
 DWORD Value  // 设置纹理采样属性值 
);
///////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT IDirect3DDevice9::GetDeviceCaps//查询当前设备的支持的3D特性
(
 D3DCAPS9 *pCaps  
)
////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXCreatemesh//创建多边行网格对象
(
 DWORD  NumFaces, //多边形网格的多边形数目
 DWORD NumNertices, //多边形网格的顶点数目
 DWORD Options, //枚举类型D3DXMESH值的组合,指定生成的多边形网格的缓冲区属性
 CONST LPD3DVERTEXELEMENT9 *pDeclararlom,//指定生成的多边形网格的顶点信息
 LPDIRECT3DDECICE9 pDevice, //3D设备制指针
 LPD3DXMESH *ppMesh, //存储生成的多边形网格的内存地址
)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXLoadMeshFromX//读取模型文件
(
 LPCTSTR pFilename, //X文件路径和名称字符串
 DWORD Options, //指定生成的多边形网格属性
 LPDIRECT3DDECICE9 pDevice, //3D设备制指针
 LPD3DXBUFFER* ppAdjacency, //存储邻近多边形信息的LPD3DXBUFFER地址
 LPD3DXBUFFER* ppMaterials, //存储模型材质的LPD3DXBUFFER地址
 LPD3DXBUFFER* ppEffectInstances,//存储模型特殊效果实例的LPD3DXBUFFER地址
 DWORD* pNumMaterials, //存储模型材质的内存地址
 LPD3DXMESH*   ppMesh //存储生成的多边形网格的内存地址
)

HRESULT DrawSubet
(
 DWORD Attibid //指明对多边形网格的第几组多边形进行渲染
)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct D3DXMATERIAL
{
 D3DXMATERIAL9 MatD3D, //Direct3D材质
 LPSTR pTextureFilename, //包含纹理文件名称的字符串
}D3DXMATERIAL;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CheckDeviceMultiSampleType//检查当前设备是否支持图形多重采样
(
 UINT Adapter,    //表示当前查询的硬件的序号,通常以D3DADAPTER_DEFAULT表示对系统当前默认使用的图形显示硬件查询
 D3DDEVTYPR DeviceType,   //表示当前查询的设备类型
 D3DFORMAT SurfaceFarmat,  //表示需要查询的渲染表面像素显示格式
 BOOL Windowed,    //是否使用窗口显示
 D3DMULTISAMPLE_TYPE MultSampleType, //表示需要查询的多重采样方法
 DWORD* pQunlityLevels   //存储返回的图形质量数值
)
////////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DFOGMODE//雾化状态
{
    D3DFOG_NONE                 = 0,  //禁用雾化处理
    D3DFOG_EXP                  = 1,  //指数增加的像素雾化效果
    D3DFOG_EXP2                 = 2,  //平方增加的像素雾化效果
    D3DFOG_LINEAR               = 3,  //线性增加的顶点雾化效果
    D3DFOG_FORCE_DWORD          = 0x7fffffff, /* force 32-bit size enum */
} D3DFOGMODE;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DBLEND {
    D3DBLEND_ZERO               = 1,//Alpha混合系数为0
    D3DBLEND_ONE                = 2,//Alpha混合系数为1
    D3DBLEND_SRCCOLOR           = 3,//Alpha混合系数为当前绘制像素的Color值(R,G,B,A)
    D3DBLEND_INVSRCCOLOR        = 4,//Alpha混合系数为1-当前绘制像素的Color值(R,G,B,A)
    D3DBLEND_SRCALPHA           = 5,//Alpha混合系数为当前绘制像素的Alpha值
    D3DBLEND_INVSRCALPHA        = 6,//Alpha混合系数为1-当前绘制像素的Alpha值
    D3DBLEND_DESTALPHA          = 7,//Alpha混合系数为颜色缓冲区中像素的Alpha值
    D3DBLEND_INVDESTALPHA       = 8,//Alpha混合系数为1-颜色缓冲区中像素的Alpha值
    D3DBLEND_DESTCOLOR          = 9,//Alpha混合系数为颜色缓冲区中像素的Color值(R,G,B,A)
    D3DBLEND_INVDESTCOLOR       = 10,//Alpha混合系数为1-颜色缓冲区中像素的Color值(R,G,B,A)
    D3DBLEND_SRCALPHASAT        = 11,
    D3DBLEND_BOTHSRCALPHA       = 12,
    D3DBLEND_BOTHINVSRCALPHA    = 13,
    D3DBLEND_BLENDFACTOR        = 14, /* Only supported if D3DPBLENDCAPS_BLENDFACTOR is on */
    D3DBLEND_INVBLENDFACTOR     = 15, /* Only supported if D3DPBLENDCAPS_BLENDFACTOR is on */

    D3DBLEND_SRCCOLOR2          = 16,
    D3DBLEND_INVSRCCOLOR2       = 17,

    D3DBLEND_FORCE_DWORD        = 0x7fffffff, /* force 32-bit size enum */
} D3DBLEND;
//////////////////////////////////////////////////////////////////////////////////////////////
//纹理坐标生成标志
#define D3DTSS_TCI_PASSTHRU                             0x00000000
#define D3DTSS_TCI_CAMERASPACENORMAL                    0x00010000
#define D3DTSS_TCI_CAMERASPACEPOSITION                  0x00020000
#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR          0x00030000
#define D3DTSS_TCI_SPHEREMAP                            0x00040000
////////////////////////////////////////////////////////////////////////////////////////////
D3DVERTEXBUFFER_DESC vbDescription;
_vertexBuffer->GetDesc(&vbDescription); // 取得顶点缓存信息

D3DINDEXBUFFER_DESC ibDescription;
_indexBuffer->GetDesc(&ibDescription); //取得索引缓存信息

typedef struct _D3DVERTEXBUFFER_DESC {
 D3DFORMAT Format;
 D3DRESOURCETYPE Type;
 DWORD Usage;
 D3DPOOL Pool;
 UINT Size;
 DWORD FVF;
} D3DVERTEXBUFFER_DESC;

typedef struct _D3DINDEXBUFFER_DESC {
 D3DFORMAT Format;
 D3DRESOURCETYPE Type;
 DWORD Usage;
 D3DPOOL Pool;
 UINT Size;
} D3DINDEXBUFFER_DESC;
/////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DTEXTURETRANSFORMFLAGS//选择输出纹理坐标类型
{
    D3DTTFF_DISABLE         = 0,    // texture coordinates are passed directly
    D3DTTFF_COUNT1          = 1,    // rasterizer should expect 1-D texture coords
    D3DTTFF_COUNT2          = 2,    // rasterizer should expect 2-D texture coords
    D3DTTFF_COUNT3          = 3,    // rasterizer should expect 3-D texture coords
    D3DTTFF_COUNT4          = 4,    // rasterizer should expect 4-D texture coords
    D3DTTFF_PROJECTED       = 256,  // texcoords to be divided by COUNTth element
    D3DTTFF_FORCE_DWORD     = 0x7fffffff,
} D3DTEXTURETRANSFORMFLAGS;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DCMPFUNC//模板测试类型枚举
{
 D3DCMP_NEVER = 1,  //模版测试永不成功。
 D3DCMP_LESS = 2,  //假如LHS < RHS,那么模版测试成功。
 D3DCMP_EQUAL = 3,  //假如LHS = RHS,那么模版测试成功。
 D3DCMP_LESSEQUAL = 4,  //假如LHS <= RHS,那么模版测试成功。
 D3DCMP_GREATER = 5,  //假如LHS > RHS,那么模版测试成功。
 D3DCMP_NOTEQUAL = 6,  //假如LHS <> RHS,那么模版测试成功。
 D3DCMP_GREATEREQUAL = 7, //假如LHS >= RHS,那么模版测试成功。
 D3DCMP_ALWAYS = 8,  //模版测试总是成功。
 D3DCMP_FORCE_DWORD = 0x7fffffff
} D3DCMPFUNC;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef enum _D3DSTENCILOP {
    D3DSTENCILOP_KEEP           = 1, //指定不改变模版缓存。
    D3DSTENCILOP_ZERO           = 2, //指定设置模版缓存入口为0。
    D3DSTENCILOP_REPLACE        = 3, //指定用模版参考值(reference value )来替换模版缓存入口。
    D3DSTENCILOP_INCRSAT        = 4, //指定增加模版缓存入口。假如增加的值超过了允许的最大值,我们就设置它为最大值。
    D3DSTENCILOP_DECRSAT        = 5, //指定减少模版缓存入口。假如减少后的值小于了0,我们就设置它0
    D3DSTENCILOP_INVERT         = 6, //指定按位取反模版缓存入口
    D3DSTENCILOP_INCR           = 7, //指定增加模版缓存入口。假如增加的值超过了允许的最大值,我们就设置它为0
    D3DSTENCILOP_DECR           = 8, //指定减少模版缓存入口。假如减少后的值小于了0,我们就设置它为允许的最大值
    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff, /* force 32-bit size enum */
} D3DSTENCILOP;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixReflect//创建反射矩阵
(
 D3DXMATRIX *pOut, // The resulting reflection matrix.
 CONST D3DXPLANE *pPlane // The plane to reflect about.
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixShadow//创建阴影矩阵
(
 D3DXMATRIX *pOut,
 CONST D3DXVECTOR4 *pLight, // L
 CONST D3DXPLANE *pPlane // plane to cast shadow onto
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXCreateFontIndirect//创建一个ID3DXFont接口
(
 LPDIRECT3DDEVICE9 pDevice, // device to be associated with the font
 CONST LOGFONT* pLogFont, // LOGFONT structure describing the font
 LPD3DXFONT* ppFont // return the created font
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
INT ID3DXFont::DrawText//绘制文本
(
 LPCSTR pString,//指向要绘制的文
 INT Count,//字符串中特征字符的数量。假如字符是以null 结束的字符串则可将其指定为-1
 LPRECT pRect,//指向一个RECT 结构,它定义一个文字被绘制在屏幕上的范围。
 DWORD Format,//可选参数,指定文字怎样被格式化
 D3DCOLOR Color//文字的颜色
);
//////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
CD3DFont::CD3DFont//CD3DFont构造原型
(
 const TCHAR* strFontName,//以null 结束的字符串,它指定字体类型
 DWORD dwHeight,//字体的高度。
 DWORD dwFlags=0L//可选参数; 你能设置该参数为0 或者用下面参数; D3DFONT_BOLD,D3DFONT_ITALIC, D3DFONT_ZENABLE。
);

CD3DFont Font = new CD3DFont("Times New Roman", 16, 0); // instantiate
Font->InitDeviceObjects( Device );
Font->RestoreDeviceObjects();
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CD3DFont::DrawText//绘制文字
(
 FLOAT x, //文字在屏幕上开始绘制的x 坐标
 FLOAT y, //文字在屏幕上开始绘制的y 坐标
 DWORD dwColor,//文字的颜色
 const TCHAR* strText,//要绘制的文字
 DWORD dwFlags=0L//可选参数; 你能设置该参数为0 或者用下面参数; D3DFONT_CENTERED,D3DFONT_TWOSIDED, D3DFONT_FILTERED。
);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXCreateText//创建一个3D 文字网格,该函数不支持汉字的显示
(
 LPDIRECT3DDEVICE9 pDevice,//和mesh 关联的device
 HDC hDC,//我们将要用来产生mesh 的包含描述字体的设备环境句柄
 LPCTSTR pText,//指向以null 结束的字符串的指针,此字符串是用来指定创建什么文字mesh
 FLOAT Deviation,//字型轮廓段数间距。该值必须大于等于0。当它为0 时,段数等于字体原始设计单位(该值越接近0,那么字体就越光滑)。
 FLOAT Extrusion,//文字在z 轴方向的深度
 LPD3DXMESH* ppMesh,//返回创建的mesh
 LPD3DXBUFFER* ppAdjacency,//返回创建mesh 的相关信息。假如你不需要它可以将其指定为null
 LPGLYPHMETRICSFLOAT pGlyphMetrics//一个指向LPGLYPHMETRICSFLOAT 结构数组的指针,它包含了字型米数据假如你不关心此数据,你可以把它设置为0
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
Font->Invalidat eDeviceObjects();//删除个CD3DFont对象
Font->DeleteDeviceObjects();
delete Font;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXMesh::GetVertexBuffer(LPDIRECT3DVERTEXBUFFER9* ppVB);//得到顶点缓存指针
HRESULT ID3DXMesh::GetIndexBuffer(LPDIRECT3DINDEXBUFFER9* ppIB);//得到索引缓存指针
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXMesh::LockVertexBuffer(DWORD Flags, BYTE** ppData);//锁定整个顶点缓存
HRESULT ID3DXMesh::LockIndexBuffer(DWORD Flags, BYTE** ppData);//锁定整个索引缓存

HRESULT ID3DXMesh::UnlockVertexBuffer();//解锁
HRESULT ID3DXMesh::UnlockIndexBuffer();//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
DWORD GetFVF()//返回顶点的格式
DWORD GetNumVertices()//返回顶点缓存中的顶点数
DWORD GetNumBytesPerVertex()//返回一个顶点所占的字节数
DWORD GetNumFaces()//返回在mesh中的面(三角形)数
///////////////////////////////////////////////////////////////////////////////////////////////////////////
DWORD* buffer = 0;
Mesh->LockAttributeBuf fer(lockingFlags, &buffer);//锁定属性缓存

Mesh->UnlockAttributeBuf fer();
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXMesh::OptimizeInplace//mesh优化
(
 DWORD Flags,   //表示执行什么类型的优化方法
 CONST DWORD* pAdjacencyIn, //指向没有优化的mesh 的邻接数组
 DWORD* pAdjacencyOut,  //指向一个DWORD 数组,它被用来填充优化好了的mesh 邻接信息
 DWORD* pFaceRemap,  //—指向一个DWORD 数组,它被用来填充面重影射信息
 LPD3DXBUFFER* ppVertexRemap //指向ID3DXBuffer 指针的地址
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DXATTRIBUTERANGE
{
    DWORD AttribId; //子集的ID
    DWORD FaceStart; //该子集的面的起始值,FaceStart*3就是起始三角形在索引缓存中的序号
    DWORD FaceCount; //在子集中的面(三角形)数
    DWORD VertexStart; //该子集的起始顶点在顶点缓存中的序号
    DWORD VertexCount; //在子集中的顶点数
} D3DXATTRIBUTERANGE; 
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXMesh::GetAttributeTable//访问mesh的属性表
(
 D3DXATTRIBUTERANGE* pAttribTable,
 DWORD* pAttribTableSize
);

Mesh->SetAttributeTable( attributeTable, 12);//是设置一个有12个子集的属性表:
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXMesh::GenerateAdjacency//输出邻接信息
(
 FLOAT fEpsilon,//指示当两个点距离有多近时,可以认为是一个点
 DWORD* pAdjacency//一个指向填充了邻接信息的DWORD数组指针
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXMesh::CloneMeshFVF//数据拷贝
(
 DWORD Options,   //用来创建mesh的一个或多个创建标志
 DWORD FVF,   //创建复制mesh的灵活顶点格式
 LPDIRECT3DDEVICE9 pDevice, //与复制mesh有关的设备
 LPD3DXMESH* ppCloneMesh  //输出复制的mesh
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXCreateMeshFVF//建空mesh
(
 DWORD NumFaces,   //mesh将拥有的面数,该值必须大于0
 DWORD NumVertices,  //mesh将拥有的顶点数。该值必须大于0
 DWORD Options,   //用来创建mesh的一个或多个创建标志
 DWORD FVF,   //mesh的顶点格式
 LPDIRECT3DDEVICE9 pDevice, //与mesh相关的设备
 LPD3DXMESH* ppMesh  //输出创建好的mesh
);

HRESULT D3DXCreateMesh//建空mesh
(
 DWORD NumFaces,
 DWORD NumVertices,
 DWORD Options,
 CONST LPD3DVERTEXELEMENT9* pDeclaration,
 LPDIRECT3DDEVICE9 pDevice,
 LPD3DXMESH* ppMesh
);

HRESULT D3DXDeclaratorFromFVF
(
 DWORD FVF, // input format
 D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]//output format
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXComputeNormals//创建任何mesh 的顶点法线
(
 LPD3DXBASEMESH pMesh, // Mesh to compute normals of.
 const DWORD *pAdjacency // Input adjacency info.
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXGeneratePMesh//产生一个渐进网格
(
 LPD3DXMESH pMesh,  //输入原始mesh,它包含了我们想要生成的渐进网格的mesh数据。
 CONST DWORD *pAdjacency, //指向一个包含pMesh邻接信息的DWORD数组
 CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,//指向一个D3DXATTRIBUTEWEIGHTS 数组,它的大小是pMesh->GetNumVertices()。
 CONST FLOAT *pVertexWeights, //指向一个float数组,它的大小是pMesh->GetNumVertices(),它的第i项与pMesh中的第i个顶点相对应并且指定的是它的顶点权重。
 DWORD MinValue,   //我们想要简化到的最小顶点或面数
 DWORD Options,   //只能取D3DXMESHSIMP枚举类型中的一个值
 LPD3DXPMESH *ppPMesh  //返回生成好的渐进网格。
);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DXATTRIBU TEWEIGHTS//顶点品质权重
{
 FLOAT Position;
 FLOAT Boundary;
 FLOAT Normal;
 FLOAT Diffuse;
 FLOAT Specular;
 FLOAT Texcoord[8];
 FLOAT Tangent;
 FLOAT Binormal;
} D3DXATTRIBUTEWEIGHTS;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXComputeBoundingSphere//创建边界球
(
 LPD3DXVECTOR3 pFirstPosit ion, //指向在顶点数组中第一个顶点的向量,描述顶点位置
 DWORD NumVertices,  //在顶点数组中的的顶点数
 DWORD dwStride,   //每个顶点的字节大小
 D3DXVECTOR3* pCenter,  //返回边界球的中心
 FLOAT* pRadius   //返回边界球的半径
);

HRESULT D3DXComputeBoundingBox//创建边界盒
(
 LPD3DXVECTOR3 pFirstPosit ion,
 DWORD NumVertices,
 DWORD dwStride,
 D3DXVECTOR3* pMin,
 D3DXVECTOR3* pMax
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord//用矩阵变换3-D向量,用于坐标的变换,第四维分量为1
(     
    D3DXVECTOR3 *pOut,
    CONST D3DXVECTOR3 *pV,
    CONST D3DXMATRIX *pM
);

D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal//用于矢量的变换,第四维分量为0
(     
    D3DXVECTOR3 *pOut,
    CONST D3DXVECTOR3 *pV,
    CONST D3DXMATRIX *pM
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXVECTOR3* WINAPI D3DXVec3Normalize//返回规格化向量
(
 D3DXVECTOR3 *pOut,
 CONST D3DXVECTOR3 *pV
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXMATRIX *D3DXMatrixRotationAxis//相机绕着任意轴旋转
(
 D3DXMATRIX *pOut, //相机旋转后输出矩阵
 CONST D3DXVECTOR3 *pV, //任意轴向量
 FLOAT Angle //旋转角度
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXVECTOR3 *D3DXVec3Cross//计算两个3-D向量叉乘。
(         
    D3DXVECTOR3 *pOut,
    CONST D3DXVECTOR3 *pV1,
    CONST D3DXVECTOR3 *pV2
);
////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DXFRAME//框架信息(对应于骨骼)
{
    LPSTR                   Name;
    D3DXMATRIX              TransformationMatrix; //本骨骼的转换矩阵

    LPD3DXMESHCONTAINER     pMeshContainer;       //本骨骼所对应Mesh数据

    struct _D3DXFRAME       *pFrameSibling;       //兄弟骨骼
    struct _D3DXFRAME       *pFrameFirstChild;    //子骨骼
} D3DXFRAME, *LPD3DXFRAME;
////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DXMESHCONTAINER
{
    LPSTR                   Name;       //容器名
    D3DXMESHDATA            MeshData;   //Mesh数据,可创建SkinMesh取代这个Mesh
    LPD3DXMATERIAL          pMaterials; //材质数组
    LPD3DXEFFECTINSTANCE    pEffects;  
    DWORD                   NumMaterials;//材质数
    DWORD*                  pAdjacency;  //邻接三角形数组
    LPD3DXSKININFO          pSkinInfo;   //蒙皮信息,其中含.x中的各个skinweight蒙皮顶点索引及各骨骼偏移矩阵等。
    struct _D3DXMESHCONTAINER *pNextMeshContainer;
} D3DXMESHCONTAINER, *LPD3DXMESHCONTAINER;
////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI D3DXLoadMeshHierarchyFromX
(
        LPCSTR Filename,                 //.x文件名
        DWORD MeshOptions,               //Mesh选项,一般选D3DXMESH_MANAGED
        LPDIRECT3DDEVICE9 pD3DDevice,    //指向D3D设备Device
        LPD3DXALLOCATEHIERARCHY pAlloc,  //自定义数据容器
        LPD3DXLOADUSERDATA pUserDataLoader,  //一般选NULL
        LPD3DXFRAME *ppFrameHierarchy,       //返回根Frame指针,指向代表整个骨架的Frame层次结构
        LPD3DXANIMATIONCONTROLLER *ppAnimController //返回相应的动画控制器
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI D3DXFrameCalculateBoundingSphere//求有骨骼模型的包围球
(
    CONST D3DXFRAME *pFrameRoot,      
    LPD3DXVECTOR3 pObjectCenter, 
    FLOAT *pObjectRadius         
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
LPD3DXFRAME WINAPI D3DXFrameFind//找到根框架的子框架
(
    CONST D3DXFRAME *pFrameRoot,
    LPCSTR Name
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )//则正反面都绘制。
m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW )//绘制顺时针三角形。
m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )//绘制逆时针三角形。

m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );//开启光照
m_pd3dDevice->SetRenderState( D3DRS_AMBIENT, D3DCOLOR_XRGB( 64,64,64 ) )//设置环境光颜色值
m_pd3dDevice->SetRenderState( D3DRS_SPECULARENABLE, TRUE )//开启镜面反射光照计算
m_pd3dDevice->SetRenderState(D3DRS_NORMALIZENORMALS, true);//顶点法线总是单位矢量

m_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );//激活深度缓存
m_pd3dDevice->SetRenderState( D3DRS_ZFUNC, D3DCMP_LESS );//设置深度测试函数
m_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );//绘制像素时是否更新缓冲区

m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); //指定纹理层的Alpha混合方法
m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );//开启Alpha混合计算

m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );//设置源混合因子Alpha混合系数为当前绘制像素的Alpha值
m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );//设置目标混合因子Alpha混合系数为1-当前绘制像素的Alpha值

m_pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );//激活alpha测试
m_pd3dDevice->SetRenderState( D3DRS_ALPHAREF, 0X00000001 );//设置alpha测试参考值(0x00000001 - 0x000000ff)
m_pd3dDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATER );//设置alpha测试函数

m_pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME );//设置多边形填充模式

m_pd3dDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_FLAT );//设置Flat渲染
m_pd3dDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD );//设置Gouraud渲染

m_pd3dDevice->SetRenderState( D3DRS_MULTISAMPLEANTIALIAS, FALSE );//是否开启多重采样

m_pd3dDevice->SetRenderState( D3DRS_FOGENABLE, TRUE );//是否开启雾化处理
m_pd3dDevice->SetRenderState( D3DRS_RANGEFOGENABLE, TRUE );//是否开启基于发散的雾化处理

m_pd3dDevice->SetRenderState( D3DRS_FOGTABLEMODE, D3DFOG_EXP );//设置雾化状态
m_pd3dDevice->SetRenderState( D3DRS_FOGCOLOR, 0x00ff0000 );//设置雾的颜色

m_pd3dDevice->SetRenderState( D3DRS_FOGSTART, *(DWORD*)&start );//设置雾化起始距离,只对线性雾化有效
m_pd3dDevice->SetRenderState( D3DRS_FOGEND, *(DWORD*)&end );//设置雾化最大距离,只对线性雾化有效

m_pd3dDevice->SetRenderState( D3DRS_FOGDENSITY, *(DWORD*)&density );//设置指数或平方增加的雾的密度

m_pd3dDevice->SetRenderState(D3DRS_STENCILENABLE, true);//开启模板缓存
m_pd3dDevice->SetRenderState(D3DRS_STENCILREF, 0x1);//设置模板参考值,模版参考值ref的默认值为0
m_pd3dDevice->SetRenderState(D3DRS_STENCILMASK, 0x0000ffff);//设置模板掩码,模版掩码的默认值为0xffffffff
m_pd3dDevice->SetRenderState(D3DRS_STENCILWRITEMASK, 0x0000ffff);设置模板写掩码,它的默认值是0xffffffff

m_pd3dDevice->SetRenderState(D3DRS_STENCILFAIL, StencilOperation);//对于ijth像素模版测试失败。我们能够定义怎样更新在模版缓存中的ijth
m_pd3dDevice->SetRenderState(D3DRS_STENCILZFAIL, StencilOperation);//对于ijth像素深度测试失败。我们能够定义怎样更新在模版缓存中的ijth
m_pd3dDevice->SetRenderState(D3DRS_STENCILPASS, StencilOperation);//对于ijth像素模版测试和深度测试都成功。我们能够定义怎样更新在模版缓存中的ijth
/////////////////////////////////////////////////////////////////////////////////////////////////////
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );//设置最近采样过滤
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );//设置线性纹理过滤
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC );//设置异性纹理过滤
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC );
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAXANISOTROPY, 4 );//需调用GetDeviceCaps()检测最大异性值

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );//设置多级渐进纹理过滤
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAXMIPLEVEL, 4 );//设置最大多级纹理过滤级数

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP );//设置重叠纹理寻址
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP );

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR );//设置镜像纹理寻址
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR );

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );//设置夹取纹理寻址
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );

m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER );//设置边框纹理寻址
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER );
m_pd3dDevice->SetSamplerState( 0, D3DTADDRESS_BORDER, 0xffff0000 );

m_pd3dDevice->SetRenderState(D3DRS_POINTSPRITEENABLE, true);//表示将当前的纹理全部映射到点精灵上
m_pd3dDevice->SetRenderState(D3DRS_POINTSPRITEENABLE, false);//表示用指定的纹理坐标映射到点精灵的点(图素)上

m_pd3dDevice->SetRenderState(D3DRS_POINTSCALEENABLE, true);//表示用视图空间单位来解释点的大小
m_pd3dDevice->SetRenderState(D3DRS_POINTSCALEENABLE, false);//表示点的大小将用屏幕空间单位来解释

m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, DWORD size );//表示点精灵的尺寸
m_pd3dDevice->SetRenderState(D3DRS_POINTSIZE_MIN, DWORD size );//表示点精灵的最小尺寸
m_pd3dDevice->SetRenderState(D3DRS_POINTSIZE_MAX, DWORD size );//表示点精灵的最大尺寸

m_pd3dDevice->SetRenderState(D3DRS_POINTSCALE_A, DWORD size );//这3 个常量表示如何根据距离控制点精灵的尺寸—这个距离是点精灵到照相机的距离
m_pd3dDevice->SetRenderState(D3DRS_POINTSCALE_B, DWORD size );
m_pd3dDevice->SetRenderState(D3DRS_POINTSCALE_C, DWORD size );
/////////////////////////////////////////////////////////////////////////////////////////////
m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);//设置Alpha混合的第一个参数为像素的不同光照类型下的反射颜色值
m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);//设置Alpha混合方法为将颜色混合的第1个参数颜色输出
////////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXHANDLE ID3DXConstantTable::GetConstantByName//取得常量句柄
(
 D3DXHANDLE hConstant,  //我们要取得的父结构中变量句柄的D3DXHANDLE 标识
 LPCSTR pName   //我们想获得的句柄的着色器代码中的变量的名字。
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXConstantTable::SetXXX//设置常量
(
 LPDIRECT3DDEVICE9 pDevice, //常量表所关联的设备的指针
 D3DXHANDLE hConstant,  //我们正在设置的变量句柄的引用
 XXX value   //我们要把变量设置成的值
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXConstantTable::SetDefaults//设置常量默认值
(
 LPDIRECT3DDEVICE9 pDevice //关联到常量表的设备的指针
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT D3DXCompileShaderFromFile//编译HLSL着色器
(
 LPCSTR pSrcFile,   //要编译的包含着色器源代码的文本文件的文件名
 CONST D3DXMACRO* pDefines,  //参数可选
 LPD3DXINCLUDE pInclude,   //ID3DXInclude 接口指针
 LPCSTR pFunctionName,   //指定入口点函数名的字符串
 LPCSTR pTarget,    //指定要编译成的HLSL着色器源文件的版本的字符串
 DWORD Flags,    //可选的编译标记,指定为0 标识没有标记。有效的选项是:
      //D3DXSHADER_DEBUG ——通知编译器写入调试信息
      //D3DXSHADER_SKIPVALIDATION——通知编译器不要做任何代码检查。此项仅用于你已知着色器能够工作时
      //D3DXSHADER_SKIPOPTIMIZATION——通知编译器不要执行任何代码优化。实践中,这个选项应该仅用于调试,因为这种情况下你不希望编译器以任何方式修改代码。
 LPD3DXBUFFER* ppShader,   //返回已编译的着色器代码的ID3DXBuffer 指针
 LPD3DXBUFFER* ppErrorMsgs,  //返回包含错误码和错误消息字符串的ID3DXBuffer指针
 LPD3DXCONSTANTTABLE* ppConstantTable //返回包含此着色器常量表数据的ID3DXConstantTable指针
);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CreateVertexShader//创建着色器
(
   CONST DWORD* pFunction,//已编译着色器代码的指针
   ID3D10VertexShader **ppVertexShader//返回一个IDirect3DVertexShader9 接口的指针
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _D3DVERTEXELEMENT9//描述顶点声明
{
    WORD    Stream;     //指定关联到顶点分量的流
    WORD    Offset;     //按字节,相对于顶点结构成员的顶点分量的开始
    BYTE    Type;       //指定数据类型。它可以是D3DDECLTYPE 枚举类型的任意成员
    BYTE    Method;     //指定网格化方法
    BYTE    Usage;      //指定已计划的对顶点分量的使用
    BYTE    UsageIndex; //用于标识多个相同用途的顶点分量
} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;

//Usage枚举类型
typedef enum _D3DDECLUSAGE
{
 D3DDECLUSAGE_POSITION = 0, // Position.
 D3DDECLUSAGE_BLENDWEIGHTS = 1, // Blending weights.
 D3DDECLUSAGE_BLENDINDICES = 2, // Blending indices.
 D3DDECLUSAGE_NORMAL = 3, // Normal vector.
 D3DDECLUSAGE_PSIZE = 4, // Vertex point size.
 D3DDECLUSAGE_TEXCOORD = 5, // Texture coordinates.
 D3DDECLUSAGE_TANGENT = 6, // Tangent vector.
 D3DDECLUSAGE_BINORMAL = 7, // Binormal vector.
 D3DDECLUSAGE_TESSFACTOR = 8, // Tessellation factor.
 D3DDECLUSAGE_POSITIONT = 9, // Transformed position.
 D3DDECLUSAGE_COLOR = 10, // Color.
 D3DDECLUSAGE_FOG = 11, // Fog blend value.
 D3DDECLUSAGE_DEPTH = 12, // Depth value.
 D3DDECLUSAGE_SAMPLE = 13 // Sampler data.
} D3DDECLUSAGE;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT IDirect3DDevice9::CreateVertexDeclaration//创建顶点声明
(
 CONST D3DVERTEXELEMENT9* pVertexElements,//D3DVERTEXELEMENT9 结构数组,它描述我们想要创建的顶点声明
 IDirect3DVertexDeclaration9** ppDecl//用于返回创建的IDirect3DVertexDeclaration9 接口指针
);

//使用一个顶点声明
Device->SetVertexDeclaration( _decl );
其中,_decl 是一个IDirect3DVertexDeclaration9 接口指针。
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT IDirect3DDevice9::SetVertexShader//建立顶点着色器
(
 IDirect3DVertexShader9* pShader
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT IDirect3DDevice9::CreatePixelShader//创建像素着色器
(
 CONST DWORD *pFunction,  //已编译着色器代码的指针
 IDirect3DPixelShader9** ppShader//返回一个IDirect3DPixelShader9 接口的指针
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT IDirect3DDevice9::SetPixelShader//设置像素着色器
(
 IDirect3DPixelShader9* pShader
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI  D3DXCreateEffectFromFileA//创建特效
(
        LPDIRECT3DDEVICE9               pDevice,//被创建的ID3DXEffect 对象所关联的设备
        LPCSTR                          pSrcFile,//我们要编译的包括效果源代码的文本文件的名字(效果文件名)
        CONST D3DXMACRO*                pDefines,//这个参数是可选的
        LPD3DXINCLUDE                   pInclude,//ID3DXInclude 接口指针
        DWORD                           Flags,//编译效果文件中的shader 的选项标志,指定0 为没有标志
        LPD3DXEFFECTPOOL                pPool,//可选的ID3DXEffectPool 接口指针,用于指定效果参数如何共享其它的效果实例
        LPD3DXEFFECT*                   ppEffect,//返回一个ID3DXEffect 接口指针,表示被创建的效果。
        LPD3DXBUFFER*                   ppCompilationErrors//返回一个包含错误代码字符串和消息的ID3DXBuffer 指针
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXHANDLE ID3DXEffect::GetParameterByName//得到效果参数effect parameters
(
 D3DXHANDLE hParent,  //
 LPCSTR pName   //
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
D3DXHANDLE ID3DXEffect::GetTechniqueByName//获得效果句柄
(
 LPCSTR pName // Name of the technique.
);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT ID3DXEffect::ValidateTechnique//验证一个效果
(
 D3DXHANDLE hTechnique // Handle to the technique to validat e.
);

HRESULT ID3DXEffect::SetTechnique//激活一个效果
(
 D3DXHANDLE hTechnique // Handle to the technique to set.
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
HLSL部分内嵌函数
abs(x) 返回|x|
ceil(x) 返回≥ x 的最小整数
clamp(x, a, b) clamp(x, a, b)
clamp(x, a, b) clamp(x, a, b)
cross(u, v) 返回u × v(叉积)
degrees(x) 转换x 从弧度到角度
determinant(M) 返回矩阵M 的行列式det(M)
distance(u, v) 返回u 点和v 点之间的距离||v - u||
dot(u, v) 返回u · v(点积)
floor(x) 返回≤ x 的最大整数
length(v) 返回||v||
lerp(u, v, t) 在u 和v 之间线性插值,根据参数t ε [0, 1 ]
log(x) 返回ln(x)
log10(x) 返回log10(x)
log2(x) 返回log2(x)
max(x, y) 如果x ≥ y,则返回x;否则返回y
min(x, y) 如果x ≤ y,返回x;否则返回y
mul(M, N) 返回矩阵乘积MN. 注意:矩阵乘积必须是已定义的. 如果M 是一个向量,它被作为一个行向量,则向量-矩阵(vector-matrix)乘法是已定义的。
  类似的,如果N 是一个向量,他被作为一个列向量,则矩阵-向量(matrix-vector)乘法是已定义的
normalize(v) 返回v/∥v∥
pow(b, n) 返回bn
radians(x) 转换x 从角度到弧度
reflect(v, n) 给定向量v 和表面法线n,计算其反射向量
refract(v,n, eta) 给定向量v、表面法线n 和两种材质的两个索引的
比率eta,计算其折射向量. 翻看一下物理书中
Snell 的规则或者在互联网上搜索一下关于
refraction(反射)的信息
rsqrt(x) 返回x 的平方根的倒数
saturate(x) 返回clamp(x, 0.0, 1.0)
sin(x) 返回x 的正弦,其中x 单位为弧度
返回x 的正弦,其中x 单位为弧度返回x 的正弦和余弦,其中x 单位为弧度
sqrt(x) 返回x 的平方根
tan(x) 返回x 的正切,其中x 单位为弧度
transpose(M)返回MT 的转置
////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

原创粉丝点击