direct3D学习笔记(5)

2019-03-09 20:49

度值的设置。

下面的示例代码指定了最大各项异性值为4。

g_device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC); g_device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC); g_device->SetSamplerState(0, D3DSAMP_MAXANISOTROPY, 4);

最大各项异性程度值D3DSAMP_MAXANISOTROPY为1时,表示禁用各项异性过滤。一般说来,其值越大,图像效果越好,计算量越大,速度越慢。需要注意的是,在设置最大各项异性之前,应调用IDirect3D9::GetDeviceCaps()函数,查询当前设备支持的Direct3D特性,获取当前设备支持的最大各项异性度的取值范围 //线性纹理

SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); //最近点采样

SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ POINT); SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT); //各向异性纹理过滤

SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC );

SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_ ANISOTROPIC);

5.退出Dirent3D程序,清除所有初始化时创建的COM对象

调用Release()使引用计数器减一;最后计数器为零时才调用delete();

五.三种顶点数据处理

D3DCREATE_HARDWARE_VERTEXPROCESSING D3DCREATE_SOFTWARE_VERTEXPROCESSING D3DCREATE_MIXED_VERTEXPROCESSING

一次只能给设备指定一种处理方式,软件顶点处理提供一种确保支持的顶点处理能力,包括无限制的光源数量和可编程的顶点渲染器的完全支持。在使用HAL设备时,在任一时刻都可以在软件和硬件顶点处理之间进行切换,HAL是一种同时支持软件、硬件顶点处理的设备类型,对软件顶点处理的唯一要求就是顶点缓冲区必须位于系统内存

//只指定给硬件设备 //处理能力固定 //软硬件切换使用

六.Direct3d表面

表面代表显示内存中的一块线性区域,尽管可以位于系统内存,但通常是位于显卡的显存

中。

前台缓冲区:是由显卡传送到显示器用于显示器显示的一块内存,程序不能对其进行任何

操作。

后台缓冲区:在程序中可以直接操作的一块内存区域,不能用于图形显示。 表面反转:将后台缓冲区的内容提交到前台缓冲区进行显示的过程。

交换链:一个或者多个后台缓冲区的集合,可以按照顺序逐个提交到前台缓冲区。

七.Direct3D坐标系和基本图元

1.三维笛卡尔坐标系根据z轴相对于x、y的方向又分为左手坐标系跟右手坐标系。在空间几何中常用右手坐标系,而在Direct3D中用的是左手坐标系。 2.使用顶点缓冲区绘制图形

顶点缓冲区是用来保存顶点数据的内存缓冲区,可以保存任意类型的顶点数据,并可以进行坐标变换,光照处理以及裁剪等操作。根据图形显示的需要,顶点缓冲区的顶点可以包含顶点坐标、颜色、法线向量、纹理坐标等属性,这些属性可以用灵活顶点格式FVF来描述。使用SetFVF()来声明当前实用的灵活顶点格式。灵活顶点格式使应用程序只使用它需要的顶点数据,这样可以节省系统内存空间,较小系统带宽。

3.使用索引缓冲区进行绘制

将所有的顶点数据存放在顶点缓冲区,在索引缓冲区建立索引,避免了重复,最后通过索引缓冲区跟顶点缓冲区共同绘制图形。

创建完顶点缓冲区跟索引缓冲区后,要将索引数据复制到索引缓冲区,这时需要Lock()和Unlock(),即在操作前锁定索引缓冲区,复制完后解锁。

4.渲染状态

设备渲染状态控制direct3d设备的光栅化组件的行为,通过改变渲染状态属性可以控制使用

何种着色模式,如何进行雾化及其他光栅化操作。Direct3d调用SetRenderState()来设置渲染状态。

着色模式:1. 平面着色模式;2. 戈劳德着色模式。一次只能使用一种着色模式,默认为戈劳德着色模式。

矩阵操作

//向量规格化

D3DXVECTOR3 *WINAPI D3DXVec3Normalize( D3DXVECTOR3 *pOut, //输出单位向量

CONST D3DXVECTOR3 *pV //输入的向量 ); //单位矩阵

D3DXMATRIX *D3DXMatrixIdentity(

D3DXMATRIX *pOut ); //矩阵转置

D3DXMATRIX *WINAPI D3DXMatrixTranspose(

D3DXMATRIX *pOut, CONST D3DXMATRIX *pM ); //逆矩阵

D3DXMATRIX *WINAPI D3DXMatrixInverse(

D3DXMATRIX *pOut,

FLOAT *pDeterminant, //通常忽略第二个参数都设置为0 CONST D3DXMATRIX *pM );

//设置变换矩阵

HRESULT SetTransform(

D3DTRANSFORMSTATETYPE State, //变换类型 CONST D3DMATRIX* pMatrix //变换矩阵 );

参数State 可以是一下任意类型: D3DTS_WORLD //世界变换 D3DTS_VIEW //视图变换 D3DTS_PROJECTION //投影变换 //*平移变换

D3DXMATRIX *WINAPI D3DXMatrixTranslation(

D3DXMATRIX *pOut, //输出矩阵 FLOAT x, //X 轴上的平移量 FLOAT y, //Y 轴上的平移量 FLOAT z //Z 轴上的平移量 ); //旋转变换

D3DXMATRIX *WINAPI D3DXMatrixRotationX( //绕X 轴旋转

D3DXMATRIX *pOut, //输出矩阵 FLOAT Angle //旋转角度 );

D3DXMATRIX *WINAPI D3DXMatrixRotationY( //绕Y 轴旋转

D3DXMATRIX *pOut, //输出矩阵 FLOAT Angle //旋转角度 );

D3DXMATRIX *WINAPI D3DXMatrixRotationZ( //绕Z 轴旋转 D3DXMATRIX *pOut, //输出矩阵

FLOAT Angle //旋转角度 );

D3DXMATRIX *WINAPI D3DXMatrixRotationAxis( //绕任意轴旋转

D3DXMATRIX *pOut, //输出矩阵

CONST D3DXVECTOR3 *Pv //旋转中心轴向量 FLOAT Angle //旋转角度 );

//*缩放变换

D3DXMATRIX *WINAPI D3DXMatrixScaling(

D3DXMATRIX *pOut, //输出矩阵 FLOAT sx, //X 轴上的缩放量 FLOAT sy, //Y 轴上的缩放量 FLOAT sz //Z 轴上的缩放量 );

//*组合变换,两个矩阵相乘

D3DXMATRIX *WINAPI D3DXMatrixMultiply(

D3DXMATRIX *pOut,

//输出变换矩阵

//输入矩阵

CONST D3DXMATRIX *pM1, //输入矩阵 CONST D3DXMATRIX *pM2 );

//计算两个3-D向量叉乘。向量的外积或者向量积,用右手法则判断,拇指指向结果向量 //通过前进向量和斜坡的法线向量做差乘,计算出右方向的向量,再由右方向和斜坡//法线做差成得出需要的平行斜面向上的向量

D3DXVECTOR3 *D3DXVec3Cross(

D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 ); 参数: pOut

[in, out] 指向 D3DXVECTOR3 结构的操作结果。 pV1

[in] 指向 D3DXVECTOR3 结构的源向量。 pV2

[in] 指向 D3DXVECTOR3 结构的源向量。 返回值:

指向D3DXVECTOR3 结构的两个向量叉乘结果。

这个函数返回两个向量叉乘结果。 例子说明如下: D3DXVECTOR3 v;

v.x = pV1->y * pV2->z - pV1->z * pV2->y; v.y = pV1->z * pV2->x - pV1->x * pV2->z; v.z = pV1->x * pV2->y - pV1->y * pV2->x; *pOut = v;

//向量的点乘,求得向量的夹角余弦值,又称内积


direct3D学习笔记(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:德镇市2013年八年级下期中试卷及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: