Directx函数大全Word格式文档下载.docx

上传人:b****5 文档编号:16782814 上传时间:2022-11-26 格式:DOCX 页数:58 大小:69.59KB
下载 相关 举报
Directx函数大全Word格式文档下载.docx_第1页
第1页 / 共58页
Directx函数大全Word格式文档下载.docx_第2页
第2页 / 共58页
Directx函数大全Word格式文档下载.docx_第3页
第3页 / 共58页
Directx函数大全Word格式文档下载.docx_第4页
第4页 / 共58页
Directx函数大全Word格式文档下载.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

Directx函数大全Word格式文档下载.docx

《Directx函数大全Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Directx函数大全Word格式文档下载.docx(58页珍藏版)》请在冰豆网上搜索。

Directx函数大全Word格式文档下载.docx

D3D中的射线2

D3D中的图形变换2

3.纹理4

从磁盘文件获取纹理2

设置当前要渲染的纹理2

设置纹理的渲染状态2

设置纹理采样属性2

从一张纹理图形中生成多级纹理2

包装纹理寻址2

镜像纹理寻址2

夹取纹理寻址2

边框颜色纹理寻址2

一次镜像纹理寻址2

纹理包装2

4.光照4

D3D光照的基本实现4

顶点格式2

设置物体材质2

添加光源2

激活光照运算2

5.摄像机4

生成视图变换矩阵2

生成投影变换矩阵2

6.模型基础4

ID3DXMesh接口基础2

ID3DXMesh接口相关2

应用.X文件2

7.游戏中的基本特效4

检查硬件支持的深度缓冲区格式2

激活深度测试2

设置深度缓冲区更新2

设置深度测试函数2

激活Alpha混合2

设置Alpha混合计算方式2

设置Alpha混合系数2

激活Alpha测试2

设置Alpha测试参考值2

设置Alpha测试函数2

多边形填充模式2

查询设备是否支持多重采样2

启用多重采样的全景图形反锯齿2

设置多纹理混合方式2

激活雾化2

设置雾化计算方式2

设置雾的颜色2

设置雾的起始范围2

指数雾化浓度2

基于发散的雾化2

创建2D字体2

绘制字体2

创建3D文字网格2

8.游戏控制4

DirectInput实现键盘控制2

DirectInput实现鼠标控制2

鼠标键选2

9.游戏音乐音效4

D3D基本框架

创建D3D对象:

Direct3DCreate9(D3D_SDK_VERSION)

===============================================================================

DirectX

获取显卡显示模式:

HRESULTGetAdapterDisplayMode(

UINTAdapter,//指定显示卡序列号

D3DDISPLAYMODE*pMode//存储显示模式的指针

);

创建D3D设备接口:

HRESULT 

CreateDevice( 

 

 

UINTAdapter,//显卡序列号

D3DDEVTYPE 

DeviceType,//D3D设备类型

HWND 

hFocusWindow,//所属窗口句柄

DWORD 

BehaviorFlags,//设备进行3D运算方式

D3DPRESENT_PARAMETERS*pPresentationParameters,//用于存储D3D设备相关信息的指针

IDirect3DDevice9 

**ppReturnedDeviceInterface//返回D3D设备接口指针的地址

第二个参数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使用虚拟设备模拟顶点运算

开始渲染和结束渲染:

BeginScene();

//开始渲染

……

实际的渲染工作

EndScene();

//结束渲染

注意:

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

清空图形绘制区:

Clear( 

Count,//清除的矩形区域数量

constD3DRECT 

*pRects,//清除的矩形区域数组指针

Flags,//清除的缓冲区标志,指定清除哪一个缓冲区

D3DCOLOR 

Color,//清除后重置的颜色

float 

Z,//清除后重置的深度值,从0-1.0

DWORD 

Stencil//重置的模板值

第三个参数Flags取值(可任意组合):

D3DCLEAR_STENCIL//模板缓冲区

D3DCLEAR_TARGET//颜色缓冲区

D3DCLEAR_ZBUFFER//深度缓冲区

屏幕反转:

Present( 

CONSTRECT 

*pSourceRect,//复制源的矩形区域指针

CONSTRECT 

*pDestRect,//复制目的地的矩形区域指针

HWND 

hDestWindowOverride,//D3D设备窗口句柄

CONSTRGNDATA 

*pDirtyRegion//最小更新区域指针

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

绘制基本图形

灵活定点格式(FVF)

D3D定义的FVF格式:

D3DFVF_XYZ//包含未经变换的顶点坐标

D3DFVF_XYZRHW//包含经过变换的顶点坐标

D3DFVF_XYZW//包含经过变换和裁剪的顶点坐标

D3DFVF_NORMAL//包含法线信息

D3DFVF_PSIZE//点精灵的大小

D3DFVF_DIFFUSE//包含漫反射的颜色信息

D3DFVF_SPECULAR//包含镜面反射的颜色信息

D3DFVF_TEX0……D3DFVF_TEX8//包含0-8个纹理坐标信息

D3DFVF_XYZB1……D3DFVF_XYZB5//包含顶点位置信息和影响顶点变换的权重信息,用于骨骼动画模型中

根据D3D提供的灵活顶点格式,就可以定义自己的顶点结构体,例如,定义一个包含经过变换的坐标信息和漫反射颜色信息的顶点结构如下:

//创建顶点对象

LPDIRECT3DVERTEXBUFFER9g_pVB=NULL;

//顶点缓冲区对象

//自定义顶点格式

structCUSTOMVERTEX

{

FLOATx,y,z,rhw;

//经过变换的三维坐标

DWORDcolor;

//顶点漫反射颜色

};

#defineD3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

//以下函数设置顶点数据

CUSTOMVERTEXvertices[]=

{

{100.0f,400.0f,0.5f,1.0f,0xffff0000,},

{300.0f,50.0f,0.5f,1.0f,0xff00ff00,},

{500.0f,400.0f,0.5f,1.0f,0xff0000ff,},

};

基本图元的绘制

( 

D3DPRIMITIVETYPE 

PrimitiveType,//基本图元类型

UINT 

StartVertex,//起始顶点

UINT 

PrimitiveCount//绘制图元的数量

第一个参数PrimitiveType取值:

D3DPT_POINTLIST//点列集合(一组点的集合)

D3DPT_LINELIST//线列集合(一组线段的集合)

D3DPT_LINESTRIP//线带集合(首尾相连的线段的集合)

D3DPT_TRIANGLELIST//三角形列(一组三角形的集合)

D3DPT_TRIANGLESTRIP//三角形带(首尾相连的三角形,有两个顶点重合)

D3DPT_TRIANGLEFAN//三角形扇(组成扇形的一组三角形)

创建顶点缓冲区

CreateVertexBuffer(

Length,//顶点缓冲区的大小,按字节数算

Usage,//顶点缓冲区属性

FVF,//灵活顶点格式

D3DPOOL 

Pool,//顶点缓冲区的内存类型

IDirect3DVertexBuffer9** 

ppVertexBuffer,//顶点缓冲区指针地址

HANDLE* 

pSharedHandle//保留参数,置为0

*Usage:

参数Usage用于指定顶点缓冲区的属性,其取值可以设为0,或下面任意值的组合。

D3DUSAGE_WRITEONLY//只写属性,不能进行读操作,设置该属性可以提高系统性能

D3DUSAGE_DYNAMIC//指定顶点缓冲区要求使用动态内存

D3DUSAGE_NPATCHES//使用顶点缓冲区绘制N-patches曲线

D3DUSAGE_POINTS//指定顶点缓冲区存储原始点

D3DUSAGE_RTPATCHES//使用顶点缓冲区绘制高阶图元(high-orderprimitive)

D3DUSAGE_SOFTWAREPROCESSING//使用软件进行顶点运算,否则使用硬件计算

*Pool:

参数Pool属于枚举类型D3DPOOL,指定顶点缓冲区资源的内存位置,如下:

typedefenum_D3DPOOL 

D3DPOOL_DEFAULT=0,//默认值,顶点缓冲区尽可能存在于显存中

D3DPOOL_MANAGED=1,//由D3D的资源管理器自动调度顶点缓冲区内存位置

D3DPOOL_SYSTEMMEM=2,//顶点缓冲区位于内存中

D3DPOOL_SCRATCH=3,//定点缓冲区位于计算机临时内存中,只能进行内存加锁拷贝

D3DPOOL_FORCE_DWORD=0x7fffffff//强制将此ENUM编译为32位,无其他意义

}D3DPOOL;

下面的函数创建了一个顶点缓冲区来保存一个三角形的顶点信息:

//创建顶点缓冲

if(FAILED(g_pDevice->

UINT 

Length:

3*sizeof(CUSTOMVERTEX),

DWORD 

Usage:

D3DUSAGE_WRITEONLY,

FVF:

D3DFVF_CUSTOMVERTEX,

Pool:

D3DPOOL_DEFAULT,

ppVertexBuffer:

&

g_pVB,

pSharedHandle:

NULL)))

returnE_FAIL;

}

保存顶点

Lock( 

OffsetToLock,//加锁内存起始地址

SizeToLock,//加锁内存大小

VOID 

**ppbData,//返回内存指针地址

Flags//加锁属性

Flags:

指定了顶点缓冲区的加锁属性,它可以取值为0,或者如下中的任意组合:

D3DLOCK_DISCARD//仅在动态缓冲区下使用,硬件丢弃原缓冲区并创建一个新的缓冲区

D3DLOCK_NO_DIRTY_UPDATE//在缺省状态下,对缓冲区加锁将会在该区域设置一个Dirty标志,该属性将不对该区域设置Dirty标志

D3DLOCK_NOSYSLOCK//在加锁的过程中系统可进行其他操作

D3DLOCK_READONL//设置缓冲区位制度属性

D3DLOCK_NOOVERWRITE//尽在动态缓冲区下使用,保证不覆盖缓冲区数据,即向缓冲区中添加数据,允许在渲染时添加数据到缓冲区

//以下代码保存了顶点

//锁定顶点缓冲

if(FAILED(g_pVertexBuffer->

Lock(0,sizeof(Vertices))))

returnE_FAIL;

//拷贝顶点信息

memcpy(g_pVB,vertices,size(vertices));

//解锁

g_pVertexBuffer->

Unlock();

设置渲染状态

SetRenderState( 

D3DRENDERSTATETYPE 

State,//需要渲染的状态

Value//代表设置的渲染状态的值

图形绘制

*设置资源流

SetStreamSource( 

StreamNumber,//渲染数据流序号

IDirect3DVertexBuffer9 

*pStreamData,//进行绑定的顶点缓冲区指针

OffsetInBytes,//进行绑定连接的渲染数据流的起始位置

Stride//渲染数据流中一个顶点所占的内存的大小

*设置顶点格式

SetFVF( 

FVF//灵活顶点格式

*绘制基本图元

DrawPrimitive( 

D3DPRIMITIVETYPE 

PrimitiveType,//绘制的图元类型

StartVertex,//绘制的起始顶点

PrimitiveCount//绘制的图元数量

//Desc:

渲染图形

VOIDRender()

//清空后台缓冲区

g_pd3dDevice->

Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,255),1.0f,0);

//开始在后台缓冲区绘制图形

if(SUCCEEDED(g_pd3dDevice->

BeginScene()))

SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX));

SetFVF(D3DFVF_CUSTOMVERTEX);

g_pd3dDevice->

DrawPrimitive(D3DPT_TRIANGLELIST,0,1);

//画一个三角形

//结束在后台缓冲区绘制图形

}

Present(NULL,NULL,NULL,NULL);

//将在后台缓冲区绘制的图形提交到前台缓冲区显示

索引缓冲

顶点设置

//下面代码片段设置了索引缓冲的值

//-----------------------------------------------------------------------------

全局变量

//顶点缓冲区对象

LPDIRECT3DINDEXBUFFER9g_pIB=NULL;

//索引缓冲区对象

顶点结构和灵活顶点格式

{FLOATx,y,z,rhw;

//经过坐标转换的顶点位置

DWORDcolor;

//顶点漫反射颜色值

#defineD3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

创建顶点缓冲区和索引缓冲区

HRESULTInit

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1