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的更多相关文章

  1. 他山之石:D3DX书籍推荐

    一.DirectX9.0.3D游戏开发编程基础(龙书) 这本书网上评论很好,当初作为入门书看确实还不错,但是看得有点稀里糊涂的.现在回过头来看,它有些地方省略了,所以还得自己多多总结,总得来说还是值得 ...

  2. DXUT源码阅读笔记

    14.GetCapture() 函数功能:该函数取得捕获了鼠标的窗口(如果存在)的句柄.在同一时刻,只有一个窗口能捕获鼠标:此时,该窗口接收鼠标的输入,无论光标是否在其范围内.函数原型:HWND Ge ...

  3. Gamma校正与线性空间

    基础知识部分 为了方便理解,首先会对(Luminance)的相关概念做一个简单介绍.如果已经了解就跳到后面吧. 我们用Radiant energy(辐射能量)来描述光照的能量,单位是焦耳(J),因为光 ...

  4. Direct3D 10学习笔记(三)——文本输出

    本篇将简单整理Direct3D 10的文本输出的实现,具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅 ...

  5. 顶点着色器详解 (Vertex Shaders)

    学习了顶点处理,你就知道固定功能流水线怎么将顶点从模型空间坐标系统转化到屏幕空间坐标系统.虽然固定功能流水线也可以通过设置渲染状态和参数来改变最终输出的结果,但是它的整体功能还是受限.当我们想实现一个 ...

  6. DirectXMath

    DirectXMath 是Windows平台下的数学库,DirectXMath 库基于 XNA Math C++ SIMD library version 2.04 .   DirectXMath 库 ...

  7. DirectX HLSL相关基础

    DirectX HLSL相关 顶点着色器可用软件顶点运算方式来模拟,即在创建设备时,将设备行为标记设定为: D3DCREATE_SOFTWARE_VERTEXPROCESSING 在记事本中编写着色器 ...

  8. Dp~Hrbust1426( 集训队的晚餐 )

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxsAAAPRCAYAAACVrbUbAAAgAElEQVR4nOzdW5Bcx33n+X7aiH3b2J

  9. D3D的绘制

    一.D3D中的绘制 顶点缓存和索引缓存:IDirect3DVertexBuffer9 IDirect3DIndexBuffer 使用这两缓存而不是用数组来存储数据的原因是,缓存可以被放置在显存中,进行 ...

随机推荐

  1. 服务器被疑似挖矿程序植入,发现以及解决过程(建议所有使用sonatype/nexus3的用户清查一下)

    此次服务器被植入挖矿程序发现起来较为巧合,首先是上周三开始,我通过sonatype/nexus3搭建的仓库间歇性崩溃,但是每次重新start一下也能直接使用所以没有彻底清查,去docker logs里 ...

  2. rabbitMq及安装、fanout交换机-分发(发布/订阅)

    <dependency>            <groupId>com.rabbitmq</groupId>            <artifactId& ...

  3. unix socket服务器

    只能处理单个消息,一发一收. int loop(void) {   struct sockaddr_un client_addr;  int server_socket, client_socket; ...

  4. java线程学习之join方法

    join()方法表示一个线程要加入另一个线程,直到被加入的线程执行完毕. 这个概念不好理解的话看面这个例子 public class TestJoin { public static void mai ...

  5. 系统管理--配置Gitlab

    很多教程都有配这个,但这个又不能用于”源码管理”模块拉取代码,我一直很困惑这个配置有什么用,然后就找到了该插件的github项目地址才弄明白,链接:https://github.com/jenkins ...

  6. python实现简单算法

    #选择n^2def selectSort(li): for i in range(len(li)-1): minLoc = i for j in range(i+1,len(li)): if li[j ...

  7. pinpoint初始化hbase脚本报错

    今天在部署pinpoint的时候,执行创建表语句的脚本,报表已经存在的错误,但是那个hbase数据目录是刚创建的,表肯定是不存在的 <property> <name>hbase ...

  8. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘

    <OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本 ...

  9. Overture小课堂之如何演绎钢琴滑音

    在我们学习钢琴和学习使用Overture时,要学习如何弹奏和使用滑音.那么我们先来看看什么是滑音,如何使用钢琴演绎,在Overture里滑音又在哪里呢? 滑音,在音乐术语中通常指一种装饰音和演奏指法. ...

  10. asp.net简繁体转换

    简繁体转换添加Microsoft.VisualBasic.dll引用 //简转繁 string str= Microsoft.VisualBasic.Strings.StrConv("民生银 ...