码迷,mamicode.com
首页 > 其他好文 > 详细

D3DX 9.9 LEARNERNOTO

时间:2016-05-19 23:09:23      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

DirectX 9.0 3D游戏开发编程基础
一、开发工具:vs2013 or VC++2005 Direct3D API http://msdn.microsoft.com/directx/sdk DirectX SDK
二、俩种运行程序方式:REF和硬件
三、开发环境配置:DirectX应用程序的工程类型是WIN32 Application,在vs2013中需指定DirectX头文件和库文件所在路径。
四、D3DX可用于开发类型广泛的3D应用程序。
五、重点学会使用Direct SDK 文档 和SDK 例程 本书网站:www.moon-labs.com 相关的配套文件:www.wordware.com/files/dx9下载

第一部分、基础知识,主要提供预备的数学知识介绍
3D空间中的向量
向量在粒子系统中,可以用来表示粒子速度和加速度,相比于其他3D图像学应用中,向量大多表示方向,例:光线的方向,摄像头的方向,多边形的朝向等。
左手坐标系:z轴正方向穿进纸面
右手坐标系:z轴正方向穿出纸面
用于描述向量的坐标称为分量(component)
4个特殊的3D向量,零向量,x,y,z轴上的单位向量(unit vector)
D3DX库中,我们用类D3DXVECTOR3表示3D空间中的向量,向量也有其自身的代数运算。
掌握向量的求模公式,向量的规范化(变为单位向量)normalizing,可以通过将向量的每个分量都除以该向量的模实现规范化。
D3DX库中,用函数实现向量的规范化,该函数返回指向变换结果的指针,所以该函数可以作为另一个函数的参数来使用。在大部分情况下,除非特别声明,一个D3DX数学函数均返回一个指向结果的指针。
只有维数相同的向量才能加法和减法,在各个分量上运算。
数乘:标量可以与向量相乘,该运算可对向量进行放缩。
点积:俩向量(维数相同)点积,等于对应坐标相乘的和,或者两向量的点积等于二者夹角的余弦再乘以两个向量的模的乘积。如果u和v都是单位向量,则u 和 v就等于u,v夹角的余弦。D3DXVec3Dot(&v,&u);
点积结果是标量,叉积结果是向量,如果取俩向量的叉积,运算所得出的向量与这俩向量彼此正交。
叉积的运算规则:叉积不具备交换性。可用左手法则来判断叉积的方向。
分量形式:P=U*V
Px=(UyVz - UzVy)
Py=(UzVx - UxVz)
Pz=(UxVy - UyVx)
D3DXVECTOR3 *D3DXVec3Cross()
矩阵
一个m*n矩阵是一个m行,n列的矩阵数组。
我们用行和列组成的双下标来标识矩阵的元素,第一个下标为该元素所在行的索引,第二个下标为该元素所在列的索引。
一个矩阵仅包含单行或单列。这样的矩阵称为行向量或者列向量。
矩阵相等是俩个矩阵维数相同且对应元素也相同,则二者相等。
矩阵数乘是用该标量乘以矩阵的每个元素。
两个矩阵只有维数相同时,方可进行减法或加法运算。
矩阵乘法是矩阵在3D图形学中最重要的运算。借助矩阵乘法,我们能够对向量实施转换,也可将几个变化进行组合。
为计算矩阵乘积AB,矩阵A的列数必须等于矩阵B的行数。矩阵乘法没有交换性
若A为m*n矩阵,B为n*p矩阵,则AB乘积有意义,且等于一个m*p矩阵C,其中乘积C的第ij个元素的值等于A的第i个行向量与B的第j个列向量的点积。Cij=AiBj
单位矩阵(identity Matrix)除主对角线上元素为1外,其余元素均为0,而且是方阵(square matrix);
逆矩阵:只有方阵才有可能有逆矩阵,并非所有方阵都有逆矩阵,一个矩阵与其逆矩阵的乘积为单位阵。在“D3DX矩阵”一节中,会了解用D3DX函数来求逆矩阵的方法。在矩阵A和B军可逆,且矩阵为维数相同的方阵下:(AB)-1 = B-1 A-1;
矩阵的转置可通过交换矩阵的行和列来实现。
编写Direct3D应用程序时。通常只使用4*4矩阵和1*4的行向量。
在D3Dx中表示1*4行向量,通常使用向量类D3DXVECTOR3和D3DXVECTOR4.D3DX中表示4*4矩阵,可以使用类D3DXMATRIX.
括号运算符(parenthesis operator),利用该运算符可以方便地访问矩阵中的每个元素。
D3DX针对D3DXMATRIX类型的矩阵提供了下列很有用的函数,功能包括将该类型的矩阵转换为单位矩阵、取转置以及求逆。
D3DXMATRIX *D3DXMatrixIdentity(D3DXMATRIX *pout);
如果传入D3DXMatrixInverse函数的矩阵不可逆,则返回一个NULL值。另外,在本书中,一般忽略该函数的第2个参数,每次调用时将其置为0;

 

D3DX 9.9 LEARNERNOTO

标签:

原文地址:http://www.cnblogs.com/BINGITLIVE/p/5510309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!