D3DX 9.9 LEARNERNOTO
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的更多相关文章
- 他山之石:D3DX书籍推荐
一.DirectX9.0.3D游戏开发编程基础(龙书) 这本书网上评论很好,当初作为入门书看确实还不错,但是看得有点稀里糊涂的.现在回过头来看,它有些地方省略了,所以还得自己多多总结,总得来说还是值得 ...
- DXUT源码阅读笔记
14.GetCapture() 函数功能:该函数取得捕获了鼠标的窗口(如果存在)的句柄.在同一时刻,只有一个窗口能捕获鼠标:此时,该窗口接收鼠标的输入,无论光标是否在其范围内.函数原型:HWND Ge ...
- Gamma校正与线性空间
基础知识部分 为了方便理解,首先会对(Luminance)的相关概念做一个简单介绍.如果已经了解就跳到后面吧. 我们用Radiant energy(辐射能量)来描述光照的能量,单位是焦耳(J),因为光 ...
- Direct3D 10学习笔记(三)——文本输出
本篇将简单整理Direct3D 10的文本输出的实现,具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅 ...
- 顶点着色器详解 (Vertex Shaders)
学习了顶点处理,你就知道固定功能流水线怎么将顶点从模型空间坐标系统转化到屏幕空间坐标系统.虽然固定功能流水线也可以通过设置渲染状态和参数来改变最终输出的结果,但是它的整体功能还是受限.当我们想实现一个 ...
- DirectXMath
DirectXMath 是Windows平台下的数学库,DirectXMath 库基于 XNA Math C++ SIMD library version 2.04 . DirectXMath 库 ...
- DirectX HLSL相关基础
DirectX HLSL相关 顶点着色器可用软件顶点运算方式来模拟,即在创建设备时,将设备行为标记设定为: D3DCREATE_SOFTWARE_VERTEXPROCESSING 在记事本中编写着色器 ...
- Dp~Hrbust1426( 集训队的晚餐 )
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxsAAAPRCAYAAACVrbUbAAAgAElEQVR4nOzdW5Bcx33n+X7aiH3b2J
- D3D的绘制
一.D3D中的绘制 顶点缓存和索引缓存:IDirect3DVertexBuffer9 IDirect3DIndexBuffer 使用这两缓存而不是用数组来存储数据的原因是,缓存可以被放置在显存中,进行 ...
随机推荐
- GridView设置焦点到Cell
/// <summary> /// 设置焦点到Cell /// </summary> /// <param name="view"></p ...
- CentOS 7Google浏览器
CentOS 7安装并启动Google浏览器(★firecat亲测有效★) 2018年09月23日 12:42:47 libaineu2004 阅读数:3088 版权声明:本文为博主原创文章,未 ...
- HashMap的hash原理
public static void main(String[] args) { String[] keyArray = {"Terra", "Jonas", ...
- Hi3516A开发--接触(转)
Hi3516A开发--接触
- MySQL中 Data truncated for column 'xxx'解决方法
DATA truncated FOR COLUMN 'description' AT ROW 1 1.错误再现 表中存在null字段 此时,修改表中某字段为主键 2.解决方法 不允许数据库中出现nul ...
- 智能化脚本autoit v3的简单了解
AutoIt v3 是一个类似 BASIC 脚本语言的免费软件, 它设计用于 Windows GUI(图形用户界面) 中进行自动化操作. 利用模拟键盘按键, 鼠标移动和窗口/控件的操作实现自动化任务. ...
- Lesson 01-Linux安装及基础命令
.Linux安装(略)2.基础命令 cd 切换目录 /home 切换到home目录 . 代表当前目录 .. 代表切换到当前目录的上级目录 ~ 代表切换到用户家目录 空 代表切换到用户家目录 - 代表切 ...
- linux coredump开启
1. ulimit -c unlimited //不限制core文件的大小 2. echo '/tmp/core.%e.%p.%t' > /proc/sys/kernel/core_patt ...
- 新的尝试!ComponentOne WinForm 和 .NET Core 3.0
在微软 Build 2018 开发者大会上,.NET 团队公布了 .NET Core 的下一个主要版本 .NET Core 3.0 的规划蓝图:.NET Core 3将开始支持Windows桌面应用程 ...
- C# 批量新增的两种方法。
public class Test { private static readonly string strConnection = ""; public static void ...