﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-3D游戏之神-——约翰.卡马克</title><link>http://www.cppblog.com/jacky11cn/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 10:42:10 GMT</lastBuildDate><pubDate>Fri, 17 Apr 2026 10:42:10 GMT</pubDate><ttl>60</ttl><item><title>QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(三) --bsp文件格式分析1</title><link>http://www.cppblog.com/jacky11cn/archive/2008/01/27/41991.html</link><dc:creator>落魄江湖</dc:creator><author>落魄江湖</author><pubDate>Sun, 27 Jan 2008 13:48:00 GMT</pubDate><guid>http://www.cppblog.com/jacky11cn/archive/2008/01/27/41991.html</guid><wfw:comment>http://www.cppblog.com/jacky11cn/comments/41991.html</wfw:comment><comments>http://www.cppblog.com/jacky11cn/archive/2008/01/27/41991.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/jacky11cn/comments/commentRss/41991.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jacky11cn/services/trackbacks/41991.html</trackback:ping><description><![CDATA[&nbsp;
<p><span>一：一些废话<span>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; </span>好久没更新了，一方面是年底了，对于做销售的人来说，利用这段时间出出差，拜访拜访经销商以及<span>KA</span>客户，目的是确定明年的销售指标，晕。另一个更重要的原因是竟然把密码忘记了，没办法进入我的博客。前天整理东西时候竟然发现写密码的那张纸了，内心狂喜，哈哈！！<span><br>&nbsp;&nbsp;&nbsp;&nbsp; </span>本来想接上次的，写一些关于渲染器方面的东西，但是因为整个渲染器是依赖与<span>BSP</span>进行操作的，而且<span>QUAKE</span>中的碰撞检测也是依赖与<span>BSP</span>树的，因此先写一些关于<span>BSP</span>树方面的基础东西，以利于大家有个比较具体的印象，希望能够写的比较通俗易懂吧。<span><br>&nbsp;&nbsp;&nbsp;&nbsp; </span>事实上，前天我写了将近<span>500</span>字的<span>BSP</span>编译器的分析的文章，发现好象如果直接写编译器这个核心东西，可能需要一些关于<span>QUAKE</span>的<span>BSP</span>的相关理论的和基础的东西，特别是<span>QQ</span>上有个朋友和我说，他研究<span>QUAKE2</span>的渲染器代码已经很久了，但是有些函数看了半年还是看不懂，哈哈，其实这和我以前的感觉一样。为什么呢，因为实在网络资料很少，如果你不从<span>Q3MAP</span>这个源代码以及关卡编辑器产生的结果数据和<span>GAME.DLL</span>模块中以<span>SP_</span>开头的函数进行分析的话，<span>BSP</span>永远都是一知半解的，那是因为不知道<span>BSP</span>生成的原理，所以很多东西都看不懂。所以决定了，先从结果推导<span>BSP</span>的编译原理，当然我想这是一个非常大的代码分析，基本上最起码可以写<span>15000</span>字以上的文章了，呵呵，反正现在有的是时间，就慢慢写吧<span><br></span>二：分析生成<span>BSP</span>后的文件结构：<span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BSP</span>事实上分为三个部分，第一部分是关卡编辑器生成<span>.map</span>的文件格式（<span>Q3RADIANT</span>），第二部分是通过<span>Q3MAP</span>将<span>.map</span>的文件格式编译成<span>.BSP</span>格式<span>,</span>对于<span>BSP</span>文件而言<span>,</span>我们可以将<span>BSP</span>格式的文件数据分成两个大类<span>,</span>即用于渲染用的数据和用于碰撞检测的数据<span>(QUAKE3</span>里面称为<span>CLIPMAP),</span>至于编译过程就是一个流水线式的操作<span>,</span>要进行多次步骤产生结果<span>. </span>第三部分是操作<span>BSP,</span>关于<span>BSP</span>的操作<span>,</span>以后我慢慢来写<span>,</span>事实上是非常非常重要的和好玩的东东<span>.<br>&nbsp;&nbsp;&nbsp; </span>在这里我只想简单说一下为什么<span>BSP</span>的文件格式里面包含渲染数据和物理碰撞数据<span>,</span>那是因为<span>QUAKE3</span>的渲染部分和物理碰撞部分是分离的，这样的好处是渲染部分是客户端进行调用的<span>,</span>服务器端不需要用到渲染模块<span>,</span>然而碰撞检测却是服务器端和客户端都要用到的<span>,</span>所以分离以后就具有很大的灵活性<span>.&nbsp;</span>事实上服务器是上帝<span>,</span>定义一切规则和进行物理动力学的计算<span>,</span>而客户端使用碰撞检测是为了进行同步服务器<span>,</span>进行客户端预测使用的<span>,</span>这是一个网络端编程的概念<span>,</span>以后进行<span>C/S</span>架构分析再说吧<span><br></span>三<span>: BSP</span>文件结构代码<span><br><br>&nbsp;typedef struct {<br>&nbsp;int&nbsp;&nbsp;fileofs, filelen;<br>} lump_t;</span></span></p>
<p><span>typedef struct {<br>&nbsp;int&nbsp;&nbsp;&nbsp;ident;<br>&nbsp;int&nbsp;&nbsp;&nbsp;version;<br>&nbsp;lump_t&nbsp;&nbsp;lumps[HEADER_LUMPS];<br>} dheader_t;//</span></p>
<p><span>typedef struct {<br>&nbsp;char&nbsp;&nbsp;shader[MAX_QPATH];<br>&nbsp;int&nbsp;&nbsp;&nbsp;surfaceFlags;//</span><span>绝对经典的东西，还是和<span>q3map</span>一起说比较有趣，<span><br>&nbsp;int&nbsp;&nbsp;&nbsp;contentFlags;//</span>绝对经典的东西，还是和<span>q3map</span>一起说比较有趣<span><br>} dshader_t; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>lump1</span></span></span></p>
<p><span>// planes x^1 is allways the opposite of plane x</span></p>
<p><span>typedef struct {<br>&nbsp;float&nbsp;&nbsp;normal[3];<br>&nbsp;float&nbsp;&nbsp;dist;<br>} dplane_t; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>lump2</span></span></p>
<p><span>typedef struct {<br>&nbsp;int&nbsp;&nbsp;&nbsp;planeNum;<br>&nbsp;int&nbsp;&nbsp;&nbsp;children[2];&nbsp;// negative numbers are -(leafs+1), not nodes<br>&nbsp;int&nbsp;&nbsp;&nbsp;mins[3];&nbsp;&nbsp;// for frustom culling<br>&nbsp;int&nbsp;&nbsp;&nbsp;maxs[3];<br>} dnode_t; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>lump3</span></span></p>
<p><span>typedef struct {<br>&nbsp;int&nbsp;&nbsp;&nbsp;cluster;&nbsp;&nbsp; // -1 = opaque cluster (do I still store these?)<br>&nbsp;int&nbsp;&nbsp;&nbsp;area;<br>&nbsp;int&nbsp;&nbsp;&nbsp;mins[3];&nbsp;&nbsp;&nbsp;// for frustum culling<br>&nbsp;int&nbsp;&nbsp;&nbsp;maxs[3];<br>&nbsp;int&nbsp;&nbsp;&nbsp;firstLeafSurface;<br>&nbsp;int&nbsp;&nbsp;&nbsp;numLeafSurfaces;<br>&nbsp;//</span><span>用于碰撞检测，不用于渲染模块<span><br>&nbsp;int&nbsp;&nbsp;&nbsp;firstLeafBrush;<br>&nbsp;int&nbsp;&nbsp;&nbsp;numLeafBrushes;<br>} dleaf_t; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>lump4</span><br><br><span>int leafsurfaces; // lump5<br>int leafbrushes; //lump6</span></span></span></p>
<p><span>typedef struct {<br>&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mins[3], maxs[3];<br>&nbsp;int&nbsp;&nbsp;&nbsp;firstSurface, numSurfaces;</span></p>
<p><span>//</span><span>下面的变量用于碰撞检测用<span><br>&nbsp;int&nbsp;&nbsp;&nbsp;firstBrush, numBrushes;<br>} dmodel_t;//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;lump7</span></span></span></p>
<p><span>typedef struct {<br>&nbsp;int&nbsp;&nbsp;&nbsp;firstSide;<br>&nbsp;int&nbsp;&nbsp;&nbsp;numSides;<br>&nbsp;int&nbsp;&nbsp;&nbsp;shaderNum;&nbsp;&nbsp; // the shader that determines the contents flags<br>} dbrush_t;// <span>lump8</span></span></p>
<p><span>typedef struct {<br>&nbsp;int&nbsp;&nbsp;&nbsp;planeNum;&nbsp;// positive plane side faces out of the leaf<br>&nbsp;int&nbsp;&nbsp;&nbsp;shaderNum;<br>} dbrushside_t;//&nbsp;<span>lump9</span></span></p>
<p>&nbsp;</p>
<p><span>typedef struct {<br>&nbsp;vec3_t&nbsp;&nbsp;xyz;<br>&nbsp;float&nbsp;&nbsp;st[2];<br>&nbsp;float&nbsp;&nbsp;lightmap[2];<br>&nbsp;vec3_t&nbsp;&nbsp;normal;<br>&nbsp;byte&nbsp;&nbsp;color[4];<br>} drawVert_t;//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>lump10</span></span></p>
<p><span>int drawIndexes; //&nbsp;lump11</span></p>
<p><span>typedef struct {<br>&nbsp;char&nbsp;&nbsp;shader[MAX_QPATH];<br>&nbsp;int&nbsp;&nbsp;&nbsp;brushNum;<br>&nbsp;int&nbsp;&nbsp;&nbsp;visibleSide;&nbsp;// the brush side that ray tests need to clip against (-1 == none)<br>} dfog_t;//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>lump12</span></span></p>
<p><span>//</span><span>对表面类型进行总结，具体见下面</span></p>
<p><span>typedef enum {<br>&nbsp;MST_BAD,<br>&nbsp;MST_PLANAR,//</span><span>很重要的，说明该表面是一个世界的静态表面，例如墙面，地板等，可以通</span></p>
<p><span>//</span><span>过<span>brushside</span>计算出来<span><br>&nbsp;MST_PATCH,//</span>二次贝塞尔表面，要进行相应三角型化，要求速度的话，可以使用前向差分</span></p>
<p><span>//</span><span>算法，二次贝塞尔使用<span>9</span>个控制点插值计算<span><br>&nbsp;MST_TRIANGLE_SOUP,//</span>用于<span>BMODEL</span>的表面，可以进行三角形扇或带化或顶点索引三角形</span></p>
<p><span>//</span><span>如果要了解具体算法，可以参考一些计算几何的算法，如果有足够</span></p>
<p><span>//</span><span>深厚的功力，建议参考<span>nvstriper</span>相关代码，还有关于计算几何或</span></p>
<p><span>//</span><span>拓拔方面的知识，网络上有一个很好的库<span>ttl</span>，里面有篇实现的论</span></p>
<p><span>//</span><span>文，关于<span>gmap</span>概念以及使用半边结构进行各种拓拔查找以及修改，</span></p>
<p><span>//</span><span>绝对经典的东西<span><br>&nbsp;MST_FLARE //</span>实际上就是公告版，因该都会使用吧<span><br>} mapSurfaceType_t;</span></span></p>
<p><span>typedef struct {<br>&nbsp;int&nbsp;&nbsp;&nbsp;shaderNum;//</span><span>索引指向<span>shaderlump<br>&nbsp;int&nbsp;&nbsp;&nbsp;fogNum;//</span>索引指向<span>foglump<br>&nbsp;int&nbsp;&nbsp;&nbsp;surfaceType;// mapSurfaceType_t,</span>具体说明见上</span></p>
<p><span>&nbsp;int&nbsp;&nbsp;&nbsp;firstVert;//</span><span>索引指向<span>drawVert_tlump<br>&nbsp;int&nbsp;&nbsp;&nbsp;numVerts;</span></span></p>
<p><span>&nbsp;int&nbsp;&nbsp;&nbsp;firstIndex;//</span><span>索引指向顶点索引<span>lump<br>&nbsp;int&nbsp;&nbsp;&nbsp;numIndexes;</span></span></p>
<p><span>//</span><span>下面一些变量和静态<span>lightmap</span>相关，事实上现在的图形硬件足够快，静态光照图相关算</span></p>
<p><span>//</span><span>法已有没落的趋势，事实上现在比较先进的引擎都是全动态光照，通过<span>BSP</span>进行场景管理</span></p>
<p><span>//</span><span>可以非常高效的实现，使渲染效果大幅度提高。这部分是我最感兴趣的部分，以后有机会</span></p>
<p><span>//</span><span>可以探讨一下，但是必须要对<span>BSP</span>相关操作有非常的了解才可以深入</span></p>
<p><span>&nbsp;int&nbsp;&nbsp;&nbsp;lightmapNum;<br>&nbsp;int&nbsp;&nbsp;&nbsp;lightmapX, lightmapY;<br>&nbsp;int&nbsp;&nbsp;&nbsp;lightmapWidth, lightmapHeight;</span></p>
<p><span>&nbsp;vec3_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lightmapOrigin;<br>&nbsp;vec3_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lightmapVecs[3];&nbsp;&nbsp; // for patches, [0] and [1] are lodbounds</span></p>
<p><span>//</span><span>下面两个变量用于贝塞尔曲面</span></p>
<p><span>&nbsp;int&nbsp;&nbsp;&nbsp;patchWidth;<br>&nbsp;int&nbsp;&nbsp;&nbsp;patchHeight;<br>} dsurface_t;//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>lump13</span></span></p>
<p><span>byte lightBytes; //<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>lump14</span></p>
<p><span>byte lightgridData;//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>lump15</span></p>
<p><span>byte visBytes;//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>lump16</span></p>
<p>&nbsp;</p>
<span>这里我列出</span><span>bsp</span><span>文件格式的各个</span><span>lump</span><span>，除了</span><span>entity</span><span>这个比较特别的</span><span>lump</span><span>，这个留到</span><span>q3map</span><span>再说，是比较特别一个东东。还有就是具体表面，</span><span>bmodel</span><span>以及著名的</span><span>brush/side</span><span>等之间的关系，以及</span><span>shader</span><span>各个元素还是下次再写把，发现写东西还真是很费脑子的拉，今天就先到这里了</span><span>.</span>
<img src ="http://www.cppblog.com/jacky11cn/aggbug/41991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jacky11cn/" target="_blank">落魄江湖</a> 2008-01-27 21:48 <a href="http://www.cppblog.com/jacky11cn/archive/2008/01/27/41991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二)</title><link>http://www.cppblog.com/jacky11cn/archive/2007/11/20/37024.html</link><dc:creator>落魄江湖</dc:creator><author>落魄江湖</author><pubDate>Tue, 20 Nov 2007 08:28:00 GMT</pubDate><guid>http://www.cppblog.com/jacky11cn/archive/2007/11/20/37024.html</guid><wfw:comment>http://www.cppblog.com/jacky11cn/comments/37024.html</wfw:comment><comments>http://www.cppblog.com/jacky11cn/archive/2007/11/20/37024.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/jacky11cn/comments/commentRss/37024.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jacky11cn/services/trackbacks/37024.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 本来想直接进入quake源码分析，但发现如果没有好的写作框架，就凭QUAKE引擎这么大的代码群，真的很难写的，所以决定先搭一个分析框架，定义好各个章节，争取在本周内全部完成该工作，然后从下个礼拜开始就往分析框架里面填写内容了！哈哈！！<br>&nbsp;&nbsp;&nbsp;&nbsp; 声明：1。本人从未进入程序员行列，只是喜好才写这些文章的，所以在文章写作过程中，有任何技术性的错误，以及没有甬道正确的术语，请见谅（因为很多quake中的术语都是我自己定义的）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2。在整体的分析过程中，并不一定按照目录所定义好的顺序来写的，想到什么就写什么，这就是博客的精神把！！整个目录框架是分析的思路，可能会改变。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3。在目录各个章节都是主题的定义，我会在空闲时间慢慢的填进去的，希望能够最终坚持下来形成一整套关于quake系列比较系统的文挡。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4。 本人的目的是在中国形成一个比较活跃的以quake为基础的社群，希望更多的人了解quake的精神，我想在中国研究quake引擎的人应该很多，高手更是不少，但是在中国的网络上却看不到系统的quake源码分析，不知道为什么？？所以由本人，一个不在程序员序列的图形学爱好者来稍微引导一下。由于本人不属于程序员，因此也更本没有所谓违反某个软件公司的知识产权，具有更大的灵活性，希望其他地方的各个quake高手进行完善与修整本人所写的东东。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5。 本人渴望与从事游戏行业的程序员进行交流。由于本人的生活圈子与程序员根本不搭界，所以没有机会和从事游戏设计的人员进行交流，很郁闷啊。很想了解一下现在的图形学在中国处于什么状态，各个游戏公司底层的引擎是自己开发的还是使用开源的或则是购买世界著名的游戏引擎。希望能有机会与各位交流，本人的qq号码是47178234，本人生活在上海，如果有上海的高手，我们可以多多交流，时而可以face to face的交流拉，以增加对程序员生活的真正了解！！&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">目录：<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一章：</span><span lang=EN-US>QUAKE</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎的整体框架结构：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．引擎和</span><span lang=EN-US>API</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的精确定义</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．整个</span><span lang=EN-US>quake</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎是基于</span><span lang=EN-US>C/S</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．各个模块间的关系图</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．客户端如何与服务器端相连接（网络消息的传递与响应以及客户端数据库的产生）</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>5</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．当客户端连接到服务器后如何进入游戏状态的流程（即玩家的产生）</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>6</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．当客户端死亡后重生的流程</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>7</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．简要说明进入游戏状态后一帧运行的流程，包括各个模块函数调用的示意图</span><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二章：渲染器</span><span lang=EN-US>(refresh</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模块</span><span lang=EN-US>)</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1. </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两个重要的由外部操作的结构</span><span lang=EN-US>(refEntity_t</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><strong style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">refdef_t)</span></strong><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">以及这些结构各个值域的详细解释<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">．渲染器模块导出函数（<span lang=EN-US>API</span>）的分类以及作用<span lang=EN-US>(</span>以<span lang=EN-US>quake3-1.32b</span>原代码为准<span lang=EN-US>)<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>A</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：渲染数据资源管理函数集（<span lang=EN-US>12</span>个函数，资源包括<span lang=EN-US>BSP</span>世界数据，模型数据，<span lang=EN-US>shader</span>数据，<span lang=EN-US>skin</span>数据，<span lang=EN-US>vis</span>数据以及字体）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>B</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：设置渲染命令流水线的函数集（<span lang=EN-US>4</span>个函数）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>C</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：场景管理以及渲染的函数集（<span lang=EN-US>7</span>个函数）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>D</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：其他函数集（<span lang=EN-US>6</span>个函数）总计<span lang=EN-US>29</span>个导出函数<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>3</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">．<span lang=EN-US>Quake3 </span>渲染器的整体结构：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -63pt; mso-char-indent-count: -6.0"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>A</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：<span lang=EN-US>QUAKE3</span>渲染器是以<span lang=EN-US>OPENGL</span>为基础并支持双处理器并行运算的<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>B</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：<span lang=EN-US>QUAKE3</span>渲染器在渲染过程中可以分为前端部分和后端部分（图解），他们是如何协调起来的。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>C: QUAKE3</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">是如何支持双处理器并行进行渲染<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span>4</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">．对<span lang=EN-US>quake3</span>模型系统的扩展（使用<span lang=EN-US>MD5</span>模型格式以及<span lang=EN-US>skm</span>模型格式）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>A: </span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">为什么不用<span lang=EN-US>MD3</span>模型<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>B</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：<span lang=EN-US>MD5&amp;SKM</span>骨骼模型的格式分析<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-INDENT: -78.75pt; mso-char-indent-count: -7.5"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>C</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">：骨骼动画的原理以及应用<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 125.25pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 125.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（1）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">骨骼动画的分类（<span lang=EN-US>boneoffset</span>类型和<span lang=EN-US>vertexoffset</span>类型的详解以及各自的优缺点）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 125.25pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 125.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（2）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">详细分析骨骼动画数学原理<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 125.25pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 125.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（3）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">在定义骨骼动画的时候需要详细考虑的一些问题以及目的，不同的目的会有不同的编码方式<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 125.25pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 125.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（4）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">重点分析<span lang=EN-US>SKM</span>骨骼动画在<span lang=EN-US>warsow</span>游戏中的运用以及编码方式<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 125.25pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 125.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（5）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">骨骼动画的<span lang=EN-US>CPU</span>实现和<span lang=EN-US>GPU</span>实现的优缺点分析以及如何平衡各自的优缺点<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 125.25pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 125.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（6）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">附我的计划：市面上公开格式的骨骼动画事实上在渲染原理上基本差别不是很大，因此在学习骨骼动画的过程中，感受很多啊，现在本人正在进行系统设计，根据骨骼动画的原理，参考相关资料，提炼出一条骨骼动画统一渲染流水线。完成后公开源代码。系统设计的要求是<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 146.25pt; TEXT-INDENT: -36pt; mso-list: l0 level2 lfo1; tab-stops: list 146.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（A）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">可以直接并入<span lang=EN-US>quake3</span>引擎的多核渲染流水线<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 146.25pt; TEXT-INDENT: -36pt; mso-list: l0 level2 lfo1; tab-stops: list 146.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（B）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">使用<span lang=EN-US>CPU</span>实现的，以<span lang=EN-US>SIMD</span>为基础数学运算（因为<span lang=EN-US>CPU</span>实现进行转化后可以直接获得顶点数据再进行阴影系统的绘制，而<span lang=EN-US>GPU</span>数据的取回比较麻烦，再说本人也没有支持<span lang=EN-US>D3D10</span>版本的<span lang=EN-US>GPU</span>，无法使用新增加的</span><span lang=EN-US>stream output statge</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以及几何</span><span lang=EN-US>shader</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 146.25pt; TEXT-INDENT: -36pt; mso-list: l0 level2 lfo1; tab-stops: list 146.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（C）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">能够在运行过程中人工控制各个骨头的运动<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 146.25pt; TEXT-INDENT: -36pt; mso-list: l0 level2 lfo1; tab-stops: list 146.25pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 新宋体"><span style="mso-list: Ignore">（D）<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">使用统一的骨骼动画渲染流水线，使模型与数据相分离<span lang=EN-US>,</span>并且将阴影系统并入该渲染流水线。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>5</span><span style="FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 10.5pt">．<span lang=EN-US>BSP</span>文件格式以及<span lang=EN-US>QUAKE3 SHADER</span>文件格式<br><span lang=EN-US><o:p></o:p></span></span></p>
<p><br>今天就写到目录的前两章，计划在本周内将所有章节全部定义出来，然后再填写各个小节的内容<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p align=center><span></span>&nbsp;</p>
<img src ="http://www.cppblog.com/jacky11cn/aggbug/37024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jacky11cn/" target="_blank">落魄江湖</a> 2007-11-20 16:28 <a href="http://www.cppblog.com/jacky11cn/archive/2007/11/20/37024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一)</title><link>http://www.cppblog.com/jacky11cn/archive/2007/11/19/36916.html</link><dc:creator>落魄江湖</dc:creator><author>落魄江湖</author><pubDate>Sun, 18 Nov 2007 16:45:00 GMT</pubDate><guid>http://www.cppblog.com/jacky11cn/archive/2007/11/19/36916.html</guid><wfw:comment>http://www.cppblog.com/jacky11cn/comments/36916.html</wfw:comment><comments>http://www.cppblog.com/jacky11cn/archive/2007/11/19/36916.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/jacky11cn/comments/commentRss/36916.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jacky11cn/services/trackbacks/36916.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎以及基于</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">扩展引擎的源代码全面分析</span><span lang=EN-US style="FONT-SIZE: 9pt">(</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一</span><span lang=EN-US style="FONT-SIZE: 9pt">)<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前言：</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一：研究</span><span lang=EN-US style="FONT-SIZE: 9pt">quake</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎断断续续也已经两年有余了，一直想写点什么，但是真的到了那一步，又发现其实很难下笔，原因有三：</span><span lang=EN-US style="FONT-SIZE: 9pt">1 </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文笔不流畅，特别是技术性技巧的缺乏，概念难以精确定义，无法想内心的真实表达转换为文字，郁闷啊！！</span><span lang=EN-US style="FONT-SIZE: 9pt">2 QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎的庞大结构以及各个模块的协作关系，真的想写的时候不知道如何组织，导致思路极其紊乱。</span><span lang=EN-US style="FONT-SIZE: 9pt">3 </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列的深奥部分，列如</span><span lang=EN-US style="FONT-SIZE: 9pt">bsp</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的编译程序部分的源码还未完全理解，这是整个</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎的核心部分，这是</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎最核心的部分，可以说，整个</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎就是围绕这张图推进的。虽然</span><span lang=EN-US style="FONT-SIZE: 9pt">BSP</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的生成确实是一个非常非常难的难点，好在使用起</span><span lang=EN-US style="FONT-SIZE: 9pt">BSP</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来相对比较简单，即使不知道如何生成，但至少可以灵活使用，伟大的慷慨的卡马克。</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">二：</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列的引擎源码分析涉及到的引擎包括如下几个：</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span style="mso-spacerun: yes">&nbsp; </span>QUAKE1 </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及其基于</span><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>QUAKE1</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架的扩展引擎</span><span lang=EN-US style="FONT-SIZE: 9pt">DARKPLACES<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2<span style="mso-spacerun: yes">&nbsp; </span>QUAKE2 </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及其基于</span><span lang=EN-US style="FONT-SIZE: 9pt"> QUAKE2 </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架的扩展引擎</span><span lang=EN-US style="FONT-SIZE: 9pt"> QFUSION<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>3<span style="mso-spacerun: yes">&nbsp; </span>QUAKE3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及其基于</span><span lang=EN-US style="FONT-SIZE: 9pt"> QUAKE3 </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架的扩展引擎</span><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp; </span>XREAL/EVQ3<span style="mso-tab-count: 1">&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">三：为什么要使用上述的扩展引擎？</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 76.5pt"><span lang=EN-US style="FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎毕竟时间久远，现代硬件技术的发展以及渲染方面的新概念，新技术的出现，一些扩展引擎更加贴近当今世界技术发展的潮流。例如这三个引擎都增加了</span><span lang=EN-US style="FONT-SIZE: 9pt">GLSL</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行相应的扩展。</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 76.5pt"><span lang=EN-US style="FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这些扩展引擎都是非常著名的开源项目，资料比较多，而且都有相应使用这些扩展引擎作成的游戏，可以观看到游戏实时效果。</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">例如基于</span><span lang=EN-US style="FONT-SIZE: 9pt">DARKPLACES</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎的游戏</span><span lang=EN-US style="FONT-SIZE: 9pt">—NEXUIZ</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，渲染效果极其惊人啊！！！</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基于</span><span lang=EN-US style="FONT-SIZE: 9pt"> QFUSION </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎的游戏</span><span lang=EN-US style="FONT-SIZE: 9pt">-----WARSOW<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt; TEXT-INDENT: 21.75pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基于</span><span lang=EN-US style="FONT-SIZE: 9pt"> XREAL/EVQ3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎的游戏</span><span lang=EN-US style="FONT-SIZE: 9pt">-----REVOLUTION <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 76.5pt"><span lang=EN-US style="FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">3<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对上述三个扩展引擎的感受</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-ALIGN: left; mso-para-margin-left: 7.5gd; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt">A:DARKPLACES</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span><span lang=EN-US style="FONT-SIZE: 9pt">QUAKE1</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的框架结构，重写了全部的渲染模块，网络协议以及传输模块</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">支持</span><span lang=EN-US style="FONT-SIZE: 9pt">DOOM3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型的光影特效，根据我的感觉，应该是渲染效果最好的开源的项目，使用到了相当多的特效（</span><span lang=EN-US style="FONT-SIZE: 9pt">DOOM3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">光影特效</span><span lang=EN-US style="FONT-SIZE: 9pt">=</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">Stencil Shadow Volume, Per Pixel Lighting, NormalizationCubeMap, 2D+1D Attenuation Texturing, and Light Projection Filtering</span><span style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">）<span lang=EN-US>.</span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">该引擎可以使用著名的<span lang=EN-US>QUAKEC</span>进行服务器端游戏逻辑的开发（相当于<span lang=EN-US>QUAKE3</span>中的<span lang=EN-US>GAME.DLL</span>模块）<span lang=EN-US>,</span>同时相对于<span lang=EN-US>QUAKE1</span>的<span lang=EN-US>QUAKEC</span>内置函数<span lang=EN-US>,</span>该引擎扩展了相当多的服务器端<span lang=EN-US>QUAKEC</span>函数<span lang=EN-US>.</span>更漂亮的是他同时扩展了客户端逻辑部分的函数<span lang=EN-US>,</span>通过这些函数可以编写客户端游戏逻辑<span lang=EN-US>(</span>相当于<span lang=EN-US>QUAKE3</span>中的<span lang=EN-US>CGAME.DLL</span>模块<span lang=EN-US>,</span>但不完全等同<span lang=EN-US>).</span>事实上本人是非常喜欢<span lang=EN-US>QUAKEC</span>的编码方式<span lang=EN-US>,</span>简练而强大<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-ALIGN: left; mso-para-margin-left: 7.5gd; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt">B:QFUSION</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎最大的特点是他的逻辑结构非常清晰</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">他所扩展的骨骼动画系统是其最大的特点</span><span lang=EN-US style="FONT-SIZE: 9pt">.</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本人的感觉是极其漂亮</span><span lang=EN-US style="FONT-SIZE: 9pt">(</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当然每个人的观点不同</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这只是本人的观点罢了</span><span lang=EN-US style="FONT-SIZE: 9pt">).</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">他使用了</span><span lang=EN-US style="FONT-SIZE: 9pt">skm</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">骨骼动画文件格式</span><span lang=EN-US style="FONT-SIZE: 9pt">.</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">正是通过该引擎的骨骼动画系统</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">让本人完全掌握整个骨骼动画的精髓</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">真是收益非浅啊</span><span lang=EN-US style="FONT-SIZE: 9pt">!!!</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而且整个游戏逻辑端非常清晰</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在代码分析时候主要以该引擎作为原代码基础</span><span lang=EN-US style="FONT-SIZE: 9pt">.<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-ALIGN: left; mso-para-margin-left: 7.5gd; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt">C:xreal/evq3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">整体框架与</span><span lang=EN-US style="FONT-SIZE: 9pt">quake3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变化不大</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是最重要的一点是</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本人最喜欢的渲染器结构是</span><span lang=EN-US style="FONT-SIZE: 9pt">quake3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US style="FONT-SIZE: 9pt">render.dll,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">简直是太完美了</span><span lang=EN-US style="FONT-SIZE: 9pt">,quake3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的渲染器可以使用双处理器</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了支持双处理器的运作</span><span lang=EN-US style="FONT-SIZE: 9pt">,quake3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自己实现了一条渲染命令流水线</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及其完美</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">收益非浅啊</span><span lang=EN-US style="FONT-SIZE: 9pt">!!!!</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">又要说一句非常重要的话了</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">伟大的慷慨的卡马克</span><span lang=EN-US style="FONT-SIZE: 9pt">.</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而引</span><span lang=EN-US style="FONT-SIZE: 9pt">xreal/evq3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">擎完美的保留了</span><span lang=EN-US style="FONT-SIZE: 9pt">quake3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的渲染器框架结构同时扩展了较多的功能</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">光影特效足够强大</span><span lang=EN-US style="FONT-SIZE: 9pt">.</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">增加了</span><span lang=EN-US style="FONT-SIZE: 9pt">md5</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">骨骼模型的渲染</span><span lang=EN-US style="FONT-SIZE: 9pt">.</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在以后渲染器代码分析时候</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主要以该扩展引擎为基础结合</span><span lang=EN-US style="FONT-SIZE: 9pt">darkplaces</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎的相关技术</span><span lang=EN-US style="FONT-SIZE: 9pt">.<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-ALIGN: left; mso-para-margin-left: 7.5gd; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 78.75pt; TEXT-ALIGN: left; mso-para-margin-left: 7.5gd; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">总体而言</span><span lang=EN-US style="FONT-SIZE: 9pt">, quake</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系列引擎的整体架构非常漂亮</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是学习的好材料</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并且从</span><span lang=EN-US style="FONT-SIZE: 9pt">quake1</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span><span lang=EN-US style="FONT-SIZE: 9pt">quake3,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">整体逻辑端代码变化不大</span><span lang=EN-US style="FONT-SIZE: 9pt">, </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">真正比较有突破性的是渲染引擎</span><span lang=EN-US style="FONT-SIZE: 9pt">.</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本人在学习</span><span lang=EN-US style="FONT-SIZE: 9pt">quake</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎过程中常常敬佩卡马克的想象力</span><span lang=EN-US style="FONT-SIZE: 9pt">,api</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数是如此之简洁</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">整体框架是如此之完美</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向对象的</span><span lang=EN-US style="FONT-SIZE: 9pt">c</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">写得如此之漂亮</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过</span><span lang=EN-US style="FONT-SIZE: 9pt">quake</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引擎</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以学到游戏设计的各个概念以及各个模块</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">外部工具是如何完美的结合起来</span><span lang=EN-US style="FONT-SIZE: 9pt">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这一点是非常非常重要的</span><span lang=EN-US style="FONT-SIZE: 9pt">.<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt; TEXT-INDENT: 21.75pt"><span lang=EN-US style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 76.5pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/jacky11cn/aggbug/36916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jacky11cn/" target="_blank">落魄江湖</a> 2007-11-19 00:45 <a href="http://www.cppblog.com/jacky11cn/archive/2007/11/19/36916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一次写博客（自我介绍，内容定位以及疑问）----3D以及QUAKE</title><link>http://www.cppblog.com/jacky11cn/archive/2007/11/01/35679.html</link><dc:creator>落魄江湖</dc:creator><author>落魄江湖</author><pubDate>Thu, 01 Nov 2007 06:09:00 GMT</pubDate><guid>http://www.cppblog.com/jacky11cn/archive/2007/11/01/35679.html</guid><wfw:comment>http://www.cppblog.com/jacky11cn/comments/35679.html</wfw:comment><comments>http://www.cppblog.com/jacky11cn/archive/2007/11/01/35679.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/jacky11cn/comments/commentRss/35679.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jacky11cn/services/trackbacks/35679.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 本人第一次写博客，内心诚惶诚恐。<br><br>&nbsp;&nbsp;&nbsp; 首先，介绍一下自己吧。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 一个老男人--今年31岁<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 一个从未进入编程行业的老男人--有一份与编程相差十万八千里的工作，程序设计仅是个人爱好<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 一个对计算机图形学以及QUAKE系列引擎有着特殊挚爱的老男人--计算机图形学是OPENGL，D3D实&nbsp;&nbsp; 现的基础，而QUAKE系列引擎则对当今世界的3D游戏以及引擎发展有着深远的影响，由于卡马克的无私奉献，&nbsp;让我们有机会领略，了解3D世界的无限美丽。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 其次，关于本人博客的内容定位<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 关注OPENGL的软件实现以及应用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 跟踪计算机图形学底层方面的相关内容<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 交流3D的核心基础----3D数学以及流水线管道相关内容<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 探讨一些开源的优秀的3D引擎--例如OGRE，IRRLICHT，NEBULA等<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 当然最核心的是共同研究QUAKE系列引擎的架构，源代码，MOD以及扩展。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 最后，一个疑问<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在GOOGLE上发现国外对QUAKE的研究有非常多的网站，但为什么在中国却见不到几个啊？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据我对QUAKE系列的不算专业的研究，感觉QUAKE系列引擎是个巨大的宝库，可以学习到非常多的先进技术和理念，每一个模块都可以独立出来成为非常优秀的项目。<br><br>&nbsp;&nbsp;&nbsp; 这是我第一次写播客，不知道写什么，所以想到什么写什么。上述的内容是我现今最感兴趣的方面，而且也非常庞大，希望有时间能够慢慢的和大家进行交流，探讨甚至是争论。<br><br>&nbsp;&nbsp;&nbsp; 对了，还有一件事情需要说明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本人文笔较差，以前一直想写，但是真的要写技术性文章时候发现无从下笔，因为发现很难把一些技术问题清晰明了的用文章表达出来，郁闷！！！所以以后写得不好，就多谅了<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.cppblog.com/jacky11cn/aggbug/35679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jacky11cn/" target="_blank">落魄江湖</a> 2007-11-01 14:09 <a href="http://www.cppblog.com/jacky11cn/archive/2007/11/01/35679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>