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. 【SparkStreaming学习之三】 SparkStreaming和kafka整合

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  2. 前端如何生成条形码---JsBarcode

    React 生成条形码代码 注:需引入 jsbarcode 插件 import React from 'react'; import JsBarcode from 'jsbarcode'; class ...

  3. Thinking in work

    Scheduler? Realtime? sure SCI? Power supply and ECU life. how to assure? EMC?

  4. flutter packages.

    connectivity This plugin allows Flutter apps to discover network connectivity and configure themselv ...

  5. PHP内核深入研究 - 数组及其遍历顺序

    事实上,广义上来讲,PHP就是C语言应用在Web上的一个模板,PHP中smarty模板用得比较多,就好比JSP是Java Servlet的模板一样(喔,对了,JSP中有个JSTL标签),复杂的模板语法 ...

  6. 解决docker主机配置了DaoCloud.io的加速后重启失败问题Failed to start Docker Application Container Engine

    问题说明 正常运行的docker主机配置了DaoCloud.io加速后重启报如下错 解决过程 问题原因: 重新配置加速器后发现,daocloud的配置信息是写在/etc/docker/daemon.j ...

  7. OpenCV自带dnn的Example研究(1)— classification

    这个博客系列,简单来说,今天我们就是要研究 https://docs.opencv.org/master/examples.html下的 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. ...

  8. SpringBoot服务器部署

    注释本地tomcat jar包 jdk版本必须1.8以上 tomcat版本必须8以上 配置tomcat server.xml文件 Swagger 配置

  9. centos 安装python3与Python2并存,并解决"smtplib" object has no attribute 'SMTP_SSL'的错误

    1.需要先安装python3依赖的包yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readli ...

  10. 什么是MTBF测试【转】

    本文转载自:https://blog.csdn.net/liuhaoemail/article/details/50531489 MTBF测试 目前,终端侧的可靠性测试基本上是采用称为”MTBF测试” ...