Direct3D
caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
-
D3DXVec3CatmullRom 函数
D3DXVec3CatmullRom 函数在3-D向量之间进行Catmull-Rom插值。定义:D3DXVECTOR3 *WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV0, CONST D3DXVECTOR3 *pV1, CONST D3DXVEC原创 2004-10-22 13:14:00 · 3364 阅读 · 0 评论 -
D3DXVec3Dot 函数
D3DXVec3Dot 函数计算两个3-D向量的点乘。定义:FLOAT D3DXVec3Dot( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2);参数:pV1 [in] 指向 D3DXVECTOR3 结构的源向量。 pV2 [in] 指向 D3DXVECTOR3 结构的源向量。原创 2004-10-22 13:19:00 · 5964 阅读 · 1 评论 -
D3DXVec3Lerp 函数
D3DXVec3Lerp 函数操作两个 3-D 向量的线性内插值。定义:D3DXVECTOR3 *D3DXVec3Lerp( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, FLOAT s);参数:pOut [in, out] 指向 D3原创 2004-10-23 13:09:00 · 3115 阅读 · 0 评论 -
D3DXVec3Transform 函数
D3DXVec3Transform 函数用矩阵把向量(x, y, z, 1)进行变换。定义:D3DXVECTOR4 *WINAPI D3DXVec3Transform( D3DXVECTOR4 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM);ParameterspOut [原创 2004-10-24 21:53:00 · 4519 阅读 · 0 评论 -
D3DXVec3TransformCoordArray 函数
D3DXVec3TransformCoordArray 函数用矩阵变换3-D向量数组,并且用w = 1投影结果。定义:D3DXVECTOR3 *WINAPI D3DXVec3TransformCoordArray( D3DXVECTOR3* pOut, UINT OutStride, CONST D3DXVECTOR3* pV,原创 2004-10-25 13:08:00 · 3492 阅读 · 0 评论 -
D3DXVec4BaryCentric 函数
D3DXVec4BaryCentric 函数返回两个4-D向量组成三角形的重心坐标。定义:D3DXVECTOR4 *WINAPI D3DXVec4BaryCentric( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2, CONST D3DXV原创 2004-10-27 13:00:00 · 2683 阅读 · 0 评论 -
D3DXVec3Cross 函数
D3DXVec3Cross 函数计算两个3-D向量叉乘。SyntaxD3DXVECTOR3 *D3DXVec3Cross( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2);参数:pOut [in, out] 指向 D3DXVECTOR3 结构的原创 2004-10-22 13:17:00 · 4514 阅读 · 0 评论 -
D3DXVec3Hermite 函数
D3DXVec3Hermite 函数进行Hermite样条插值,这里是3D向量插值。定义:D3DXVECTOR3 *WINAPI D3DXVec3Hermite( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pT1, CONST D3DXVECTOR3 *原创 2004-10-22 13:28:00 · 3139 阅读 · 0 评论 -
D3DXVec3LengthSq 函数
D3DXVec3LengthSq 函数返回 3-D向量的长度的平方。定义:FLOAT D3DXVec3LengthSq( CONST D3DXVECTOR3 *pV);参数:pV [in] 指向 D3DXVECTOR3 结构的源向量。 返回值:向量的长度平方。 函数信息:Headerd3dx9ma原创 2004-10-23 13:07:00 · 3748 阅读 · 0 评论 -
D3DXVec3Normalize 函数
D3DXVec3Normalize 函数返回3D向量的规格化向量。定义:D3DXVECTOR3 *WINAPI D3DXVec3Normalize( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV);参数:pOut [in, out] 指向 D3DXVECTOR3 结构的操作结果。pV [in原创 2004-10-24 21:35:00 · 4721 阅读 · 0 评论 -
D3DXVec3TransformArray 函数
D3DXVec3TransformArray 函数用矩阵变换向量 (x, y, z, 1)数组。定义:D3DXVECTOR4 *WINAPI D3DXVec3TransformArray( D3DXVECTOR4 *pOut, UINT OutStride, CONST D3DXVECTOR3* pV, UINT VStrid原创 2004-10-25 13:06:00 · 2884 阅读 · 0 评论 -
D3DXVec3TransformNormal 函数
D3DXVec3TransformNormal 函数用矩阵变换3-D向量标准形式。定义:D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM);Parameters原创 2004-10-25 13:09:00 · 5243 阅读 · 0 评论 -
D3DXVec3UnprojectArray 函数
D3DXVec3UnprojectArray 函数把向量数组从屏幕空间投影到对象空间。定义:D3DXVECTOR3 *WINAPI D3DXVec3UnprojectArray( D3DXVECTOR3 *pOut, UINT OutStride, CONST D3DXVECTOR3 *pV, UINT VStride,原创 2004-10-26 13:22:00 · 2940 阅读 · 0 评论 -
D3DXVec4Add 函数
D3DXVec4Add 函数两个4-D向量相加。定义:D3DXVECTOR4 *D3DXVec4Add( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);参数:pOut [in, out] 指向 D3DXVECTOR4 结构的操作结果。原创 2004-10-26 13:22:00 · 3027 阅读 · 0 评论 -
D3DXVec3BaryCentric 函数
D3DXVec3BaryCentric 函数返回三个3-D坐标向量组成的三角形的重心坐标点。定义:D3DXVECTOR3 *WINAPI D3DXVec3BaryCentric( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, CONST D3DXV原创 2004-10-22 13:12:00 · 2678 阅读 · 0 评论 -
D3DXVec3ProjectArray 函数
D3DXVec3ProjectArray 函数把对象的向量从对象空间投影到屏幕空间。定义:D3DXVECTOR3 *WINAPI D3DXVec3ProjectArray( D3DXVECTOR3 *pOut, UINT OutStride, CONST D3DXVECTOR3 *pV, UINT VStride, CONST原创 2004-10-24 21:49:00 · 2688 阅读 · 0 评论 -
D3DXVec3TransformCoord 函数
D3DXVec3TransformCoord 函数用矩阵变换3-D向量,并且用w = 1投影结果。定义:D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM);Param原创 2004-10-25 13:07:00 · 11301 阅读 · 0 评论 -
D3DXVec3TransformNormalArray 函数
D3DXVec3TransformNormalArray 函数用矩阵变换3-D向量标准形式(x, y, z, 0)数组。定义:D3DXVECTOR3 *WINAPI D3DXVec3TransformNormalArray( D3DXVECTOR3* pOut, UINT OutStride, CONST D3DXVECTOR3* pV原创 2004-10-25 13:10:00 · 2966 阅读 · 0 评论 -
D3DXVec4Cross 函数
D3DXVec4Cross 函数4-D向量的叉乘。定义:D3DXVECTOR4 *WINAPI D3DXVec4Cross( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3);参数:p原创 2004-10-28 13:02:00 · 3027 阅读 · 1 评论 -
3D游戏引擎设计与实现(3)
3D游戏引擎设计与实现(3) 经过几天编写,3D游戏引擎的架构代码大体架构已经搭好。 下面来每个模块说明:l 加载程序Engine/MM3DMain.exel DLL管理模块Engine/bin/MM3DRun.dlll 引擎管理模块Engine/bin/MM3DEngine.dlll原创 2004-11-05 13:34:00 · 4784 阅读 · 0 评论 -
D3DXVec4Dot 函数
D3DXVec4Dot 函数两个4-D向量的点乘。定义:FLOAT D3DXVec4Dot( CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);参数:pV1 [in] 指向 D3DXVECTOR4 结构的源向量。 pV2 [in] 指向 D3DXVECTOR4 结构的源向量。原创 2004-10-29 16:14:00 · 2962 阅读 · 0 评论 -
3D游戏引擎设计与实现(1)
3D游戏引擎设计与实现(1) 当写这个标题时,心里想:有可能实现出来吗?现在抱着学习与实践态度,只要去努力,肯定会有收获的。费话少说,下面就开始把自己的想法先写出来,因为有目的而来,从来不打没有准备的仗。 在进行这个项目之前,肯定先去学习一下什么叫Computer graphics,就是计算机图像,它跟图像处理是大的不同,因为它是研究怎么样生成图像,而图像处理主要图原创 2004-10-30 13:50:00 · 6460 阅读 · 7 评论 -
3D游戏引擎设计与实现(2)
3D游戏引擎设计与实现(2) 经过几天萌思苦想,总算又设计3D游戏引擎的架构细节部份。原来说到要用到像COM组件的DLL实现,因此怎么样把游戏公共部份写到一起,变化部份写到一起,这样就能达到源程序重用,也可以简少维护工作。同时又把不同的功能模块尽量分开,把每个模块变成单一的功能,这样就可以复杂性降到最低了。 目前大体分为:加载程序,DLL管理模块,引擎管理模块,UI原创 2004-11-02 13:33:00 · 4769 阅读 · 2 评论 -
3D游戏引擎设计与实现(4)
已经把每个DLL的架构已经搞好,还把接口也定义了相应部份,目前这个程序已经可以运行,那么怎么样进行下一步设计呢?我是先把所有消息循环写好,然后创建窗口,就基于写好主体程序,接着就要写相应DirectX初始化部份,就是要写MM3DRenderDX9.dll模块.就是用它来封装所有DX接口,并提供给引擎管理模块使用,当然,还要给UI部份使用.接着下来,就是实现UI部份DLL.它是通纹理来实现一个3D对原创 2004-11-06 14:53:00 · 3755 阅读 · 0 评论 -
3D游戏引擎设计与实现(8)
3D游戏引擎设计与实现(8) 昨天主要进行窗口模式切换到全屏模式的编写,这里的代码也非常的多,很多地方都要注意,很多细节都要处理,否则就可能程序死在那里,或者全屏模式时转换不到窗口模式,又或者当用户改变屏幕分辩率,这时如果没有改变窗口的模式的话,又会出现错误。还有一种情况,当切换失败时,又要尽量回退到原来显示参数的模式等等。这个功能实现,几乎就把DX的初始化功能基本上完成了。当然,原创 2004-11-10 13:10:00 · 3679 阅读 · 2 评论 -
3D游戏引擎设计与实现(9)
昨天还是进行窗口模式与全屏模式相互切换的代码工作,还有调试。不断地写LOG,不断跟踪,排除了一个又一个BUG后,总算可以自由地切换窗口模式与全屏模式。在这个过程中,不知道死了多少次VC,还好Windows2000的死进程管理能力还不错,还是没有要按下电源的键。当从全屏模式切换到窗口模式时,一定不要进行单步调试,否则就要死在那里。不过也没有办法,死几回还是需要的。这样慢慢地改进,原创 2004-11-11 14:37:00 · 3807 阅读 · 5 评论 -
3D游戏引擎设计与实现(5)
今天终于实现了UI的显示,但还是比较初步的,已经可以显示按钮在窗口上,还没有添加事件响应,不过也会很快实现的.到此,基本上UI方面没有什么大的问题,还要解决输入法方面问题,因为在游戏中可能要输入中文,让所有游戏玩家可以相互聊天. 接着下来,就是全部写UI部份,然后再写好窗口模式和全屏模式的相互转换,还要检查设备是否丢失等等.在写查找3D设备显示模式时的代码,还是非常的原创 2004-11-07 14:36:00 · 3928 阅读 · 0 评论 -
3D游戏引擎设计与实现(6)
今天又有一点进展,主要实现UI的消息处理。因为每个UI界面上的控件,比如按钮都自己实现消息处理。鼠标消息、键盘消息等等,非常之多。所以目前的工作主要在GameUI模块,目前实现的渐渐显示出来效果,还是不大好看,等以后有时间再重新考虑改进。原创 2004-11-08 13:51:00 · 3696 阅读 · 0 评论 -
3D游戏引擎设计与实现(7)
3D游戏引擎设计与实现(7) 昨天在调试代码时,发现大量占用CPU资源,不知那里出什么问题,这个可以真是无从下手,正在苦恼时,突现发现,为什么不用帧速率来看看显示了多少帧。接着下来就添加帧速率上去,在调试时输出,发现每秒钟只有2到5帧,为什么会这么少的呢?又要从哪里下手去找出为什么这么慢的原因。只能用最笨的办法了,首先查看设备类型,因为它决定主要因素。接着去创建D3D设备的函数里调原创 2004-11-09 09:37:00 · 3746 阅读 · 2 评论 -
3D游戏引擎设计与实现(10)
经这几天的努力,已经把UI,D3D设备管理完成了,接着要开始写其它部份。要写哪部份才更好呢?我想肯定是先考虑怎么样渲染世界里所有的物品。要渲染物品得确定使用什么模型文件。现在可以选择的有好几种格式,第一种最方便的,应是用X的文件格式,因为D3D已经把它完全封装好。第二种是使用MDL文件格式,就是HL的格式。第三种就是QUAKE3使用MD3的格式。其实每种格式都有自己的优点和缺点,就看着自己原创 2004-11-12 13:27:00 · 3953 阅读 · 1 评论 -
3D游戏引擎设计与实现(12)
3D游戏引擎设计与实现(12) 游戏的地图文件格式是非常重要的一种格式,设计得好与坏,都关系到读写和渲染速度。如果保存的信息过少,就会导致渲染时花费大量的时间在计算。就目前主流的3D游戏,都会用这种思想:就是能预先计算的东西,就要先计好,不是在游戏中实现计算。比如用BSP树来保存冲突检测,保存可见性等,都是为了提高渲染速度。 在CS的BSP文件格式中也是这样的,先计原创 2004-11-16 17:21:00 · 4074 阅读 · 0 评论 -
3D游戏引擎设计与实现(13)
3D游戏引擎设计与实现(13) 继续写读取地图文件格式的代码,因为这里保存了很多信息。又没有什么好文档,只好慢慢来找出BSP文件有用的信息,比如顶点,纹理坐标等。先读取显示场境里所有顶点数扰,平面方程数据,多边形的边数据,然后就可以构造自己的世界里的平面了。目前还没有加载纹理进来。Coding......原创 2004-11-17 19:15:00 · 3688 阅读 · 0 评论 -
3D游戏引擎设计与实现(15)
今天在写游戏逻辑部份的代码,主要实现游戏逻辑的实现,比如世界的场境是怎么样渲染,当然这些都是按照地图文件里定义,根据BSP树保存着的信息,就可以渲染场境出来.这样就可把需要的模型加载进来,每当玩家改变输入装态时,就会作出来不同的响应.比如行走系统,就是当玩家按下不同的方向时,就可以按着一定的速度向前移动,这里的移动,就是通过向量相加实现.当改变方向,就是绕着不同的轴进行旋转. 同时,原创 2004-11-20 23:45:00 · 3330 阅读 · 0 评论 -
3D游戏引擎设计与实现(16)
这几天都在读取BSP文件,当然读取已经不成为问题了,虽然这种文件格式非常难读。一个索引连接着一个索引的。现在数据已经读取进来,但要显示它到D3D里,还是有问题的。因为它是为OPENGL设计的,所以它的坐标会不同的。怎么样修改才能合适地渲染到D3D里呢?我还在考虑中。 BSP文件是一个平面一个平面保存的,这种平面有可能是三角形,也可能是四边形,也可能是其它多边形。但D3D里只支持三角形原创 2004-11-22 13:52:00 · 3752 阅读 · 0 评论 -
3D游戏引擎设计与实现(17)
由于有人不断跟我要什么资料,其实我也没有什么资料,就只有要有网络就行了。然后上GOOGLE一查,就是最好的资料。 今天,我就把我所有连接发布出来,大家就好好看看了,资料就在那里,你的3D是否成功,就看你的理解水平和实践了。希望大家共同努力,打造最成功的3D产业商品出来,一连几天深圳开了一个文博会,但里面最成功的,要数报业集团了,当然最引人的也就是深圳大芬村的油画村,起先,我怎么也想不原创 2004-11-23 16:15:00 · 5948 阅读 · 0 评论 -
3D游戏引擎设计与实现(11)
3D游戏引擎设计与实现(11) 已经到开始考虑怎么样去渲染场境,因为游戏里主要部份就是由场境组成,然后再添加各种人物在里面,因此就要思考怎么样保存场境,3D引擎怎么样加载它。现在为了用到CS的资源,当然要用它的地图文件,才可以更加方面。到目前,就决定使用BSP的地图文件格式,这种文件格式比较复杂,保存的数据也比较多。 接着下来的,就是实现怎么样读取BSP文件格式,然原创 2004-11-15 13:30:00 · 4592 阅读 · 0 评论 -
3D游戏引擎设计与实现(14)
今天没有写什么代码,主要看看地势生成算法。这个算法叫做Real-Time Optimal Adapting Mesh。它的思想就利用等边直角三角形可以无限分成两个等边直角三角形来表示地势的细节程度。如果要表示高细节的地表,就可以用分解成更多的直角三角形,如果表示不要求那么多的细节,着重于在速度,就可以分解三等边直角三角形少一点。这个算法就称为ROAM算法。原创 2004-11-19 14:15:00 · 3322 阅读 · 0 评论 -
3D游戏引擎设计与实现(18)
这几天已经封装摄像机类,就可以自由地在地图里行走,目前只是添加了5个自由度的摄像机系统。可以向前,向后,向左,向右,向上,向下,X轴旋转,Y轴旋转等5个自由度。基本上,就用这个五个自由度,就可以在3D世界里漫游了。如果再添加碰撞检测,就可以让这个摄像机不会穿墙而过了。 在这里发现,如果没有加载纹理之前,显示线框图,是一个很好的调试方法。 后面接着要写的内容就是怎么样加载纹理,怎原创 2004-11-29 13:11:00 · 4554 阅读 · 4 评论 -
关于ACE
这段时间,没有空写3D程序,因为要学习用ACE,工作上的需要.发现ACE还非常好用,可以很简单地就实现了所有网络程序.写服务,写客户端都相当方便.目前正在测试ACE同时连接很多用户的情况,实现多用户连接,就像BT一样.下次,如果要添加网络部份到3D游戏里,肯定会选择用ACE.原创 2004-12-13 13:19:00 · 4153 阅读 · 1 评论 -
3D游戏从入门到精通-19
缩放矩阵模型比较大时,就需要把它缩小,这样就需要使用到缩放矩阵。缩放矩阵如下所示:其中的S就是缩放系数,如果要放大,就需要设置S大于0。如果要缩小,就要设置S小于1大于0。D3D里已经准备好一个设置这样缩放矩阵的函数,它就是D3DXMATRIX * D3DXMatrixScaling( D3DXMATRIX * pOut, FLOAT sx, FLOAT sy, FLO原创 2006-09-03 22:33:00 · 4401 阅读 · 0 评论