<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_H3D TECH LOG</title><subtitle type="text">3D Game Engine Dev</subtitle><id>http://feed.cnblogs.com/blog/u/38866/rss</id><updated>2011-11-02T02:26:18Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/38866/rss"/><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/11/02/2232672.html</id><title type="text">公司技术管理角度看C++游戏程序员发展,2008</title><summary type="text">公司技术管理角度看C++游戏程序员发展H3D,20082011补充： 这是一篇2008年的老文章。发这里原因有2，一来本blog没有。二来这篇文章最后一部分关于某个程序员个人价值的预测，部分应验。这位程序员决定出来单干后，很容易拿到一大笔投资。 某种意义上，这笔钱代表着这位技术人员和其团队的价值。是在公司还是出来创业，与本文无关。也无所谓。从一个技术员角度出发，提高自己的能力和视野与经验才是提升实现自己价值的道路。这是我多年来招聘培训游戏程序员的一点想法。一直想汇总一下。主要目的是为了更好的对公司新进C++程序员进行培训，并且建立起游戏程序员培训，发展，成才，成为核心骨干，管理层，期权收益人.</summary><published>2011-11-02T02:26:00Z</published><updated>2011-11-02T02:26:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/11/02/2232672.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/11/02/2232672.html"/><content type="html">&#xD;
 &#xD;
&lt;p style="text-indent: 21pt; margin-top: 5pt; layout-grid-mode: char;"  align="center"&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;&lt;strong&gt;公司技术管理角度看C++游戏程序员发展&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-top: 5pt; layout-grid-mode: char;"  align="center"&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;strong&gt;H3D,2008&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-top: 5pt; layout-grid-mode: char;"  align="left"&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2011补充： 这是一篇2008年的老文章。发这里原因有2，一来本blog没有。二来这篇文章最后一部分关于某个程序员个人价值的预测，部分应验。这位程序员决定出来单干后，很容易拿到一大笔投资。 某种意义上，这笔钱代表着这位技术人员和其团队的价值。是在公司还是出来创业，与本文无关。也无所谓。从一个技术员角度出发，提高自己的能力和视野与经验才是提升实现自己价值的道路。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-top: 5pt; layout-grid-mode: char;"  align="left"&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-top: 5pt; layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;这是我多年来招聘培训游戏程序员的一点想法。一直想汇总一下。主要目的是为了更好的对公司新进C++程序员进行培训，并且建立起游戏程序员培训，发展，成才，成为核心骨干，管理层，期权收益人等一整套体系。因为对于MMO游戏制作来讲，解决好C++技术队伍，是保证合格软件的基础之一。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;我在的H3D Studio核心技术人员和游戏制作管理人员全部是SMTH BBS游戏制作版成员。从99年开始截止BEGINER的历任版主都在H3D STUDIO里工作过。在这里我把具体的培训以及技术队伍组建的内容去掉，只和大家聊聊关于游戏程序员切身利益相关的事。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;另外这不是居高临下来评判什么事情。我本人也不是多么高级的技术人员或者管理人员。只是坚持做一件事情年头很长教训很多而已。所以有些体验。文中所有评判其他结构或人水平低，并不是说我本人水平有多高。不要误会。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，C++游戏程序员现状&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;中国C++程序员100％都是自学的。因为中国几乎没有象样的C++培训机构。大家都知道社会培训是赚钱为主要目的。能在那里成才是个大运气。也不象JAVA有SUN公司一手推行。中国大学教育里也根本没有C++教学。关于C/C++基础课的知识，只是让学生入门。但对于实际的C++软件工程应用，大学课本知识实践意义不大。最重要的是，大学里没有合格的C++老师。编程是门技术，叫手艺也行。而大学是搞科研的，多的是科学家，靠出PAPER教科凭职称为生。并不是技术员。没有10万行以上代码经验和成功软件项目经验的人，很难教出中高级C++程序员。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;游戏制作业对C++程序员的要求是比较高的。比一般行业软件高很多。因为任何一个MMO都是个中大型软件项目。日使用人次达到几十万上百万，同时使用人数几十万在线的大型网络多人交互软件，集成了超过十几项专业领域编程技术的软件，想不大都不行。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;另外，中高级C++程序员能力一般都很强。因为都是自学成才，这需要较高智商，很强的自学能力，解决问题能力，和克服困难的毅力。但是这种人才在游戏行业里人数并不多。抛开凤毛麟角具备整体大型软件架构能力的高级人才不谈。能够承担独立模块开发，具备独立解决问题的能力，写出在空间，性能，可维护性等几个方面达到要求的C++程序员，也是很难找到的。而具备这些能力，同时又具备一些专业领域技术的人（图形引擎，网络引擎，等），更加稀少。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;所以，即便是大游戏公司，对于C++游戏程序员的需求，也是永远不能够得到满足。而已经在公司工作的C++程序员，不经过短则3个月，长达1年的锻炼，也无法真正胜任独当一面的C++游戏程序开发工作。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 5pt; layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;2&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，MMO游戏开发对C++游戏程序员要求&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;前面提到，所有MMO游戏都是中大型软件。软件占用空间，稳定性，性能，可维护性等各项衡量软件质量的指标，对MMO游戏软件的要求都非常严格。远大于普通行业软件。这种规模和银行系统类似。而客户端和软件逻辑比一般的商业软件又要复杂很多倍。这就要求软件编写人员具备较高的程序编写素质。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;游戏软件中，解决好软件工程部分，只是项目的1/3。另外两部分是策划和美术/音频。从经验来看，需求变更对于MMO游戏软件，不是偶然事件，而是一种MMO游戏软件开发的基本属性。游戏软件投入大，周期长，风险高。MMO市场变化也大，交互电子游戏发展迅速。游戏软件必须面对外界变动。又因为开发周期长，所以软件需求变动成为了软件开发的一种基本属性。犹如复杂性是软件工程的一项基本属性一样。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;这导致游戏软件的开发充满了不确定性。交互娱乐不同于商业应用。娱乐是属于理性和感性之间的领域。而C++开发面对就是0和1的二元世界逻辑。这两个领域存在着不可调和的矛盾。这种情况，对C++游戏程序员提出了更高的要求。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;首先，基本C++知识，C/C++运用技能，必须极其扎实。并不是游戏软件开发用到什么平时书本上很难得到的知识点或者技能点。游戏C++开发的知识体系和技能体系，利用现有C++书籍就可以满足。比如《C++ PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECT C++》《MORE EFFECT C++》等。但是在开始游戏编程之前，把这些书本吃透并且实践熟练的人，非常难遇到。当然能够真做到这点的人，已经是个中高级C++程序员了。我曾经遇到过一个，毕业工作不久就去了GOOGLE&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;其次，对于面向对象的深入理解。是非常重要的。熟练掌握C/C++语法，编程技巧，只是满足了C++游戏程序员一部分要求。而面向对象观念的深刻理解，会为大型C++项目开发带来翻天覆地的变化。 有时候，在一个10人以上并行开发的C++游戏项目中，面向对象方法会成为救命稻草。《设计模式》以及《设计模式解析》相关的书籍，也是必修课。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;最后，好技术人员的本质是自大的。这属于正常。但是如果这种习性影响了自身继续提高和团队合作。以及影响了其成为技术管理者和项目技术核心时，那么这种技术人员的自身价值会大打折扣。 如果早日越过自命不凡这一关，扩大眼界，继续在综合素质上提高。在技术管理能力，架构能力上提高，其自身价值才会继续增长。落到实处，就是待遇和身家增长。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;由于游戏开发的本质是团队开发。任何时候，只有对一个团队有价值的技术人员，其本身的价值才有可能得以体现。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;3&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，成长和技术发展路线&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;一般技术人员发展有几个阶段&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，具备独立开发局部功能的能力&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;比如为某个UI编写逻辑接口函数。为某个LOGIN对话框编写自绘制控件等。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，具备独立开发和攻关某个功能模块的能力&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;比如为游戏增加一个小型逻辑功能模块。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，具备独立设计并开发某个系统的能力&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;比如设计和开发AUTOPATCH 系统&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，具备解决技术难题，设计架构的能力&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;比如开发网络同步仿真系统，开发一个中大型游戏制作工具&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，具备整体架构，管理，协调其他人共同开发一个大系统的能力&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;客户端主程，服务器主程，引擎主程等&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;6&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，技术director&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;制定技术发展方向，技术团队建立，技术管理等&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;在迈向每个阶段的过程中，伴随的都是巨大的工作量和工程压力。有时候是跨越1年的失败等等。在公司项目不成功时转换单位，重新开始，或者继续做为核心团队留在公司继续从新的机会做起，都是好的办法。但关键是吸取经验教训，尽量多学多练。并且结合自身长处发展。当然，游戏制作人员，最好还是依靠一个核心团队。成为核心团队的一员。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;能够达到第三档的程序，已经是公司不可缺少的人才了。但往往程序员自身对自己的认识，和公司对其的认识，有时候会有差异。我碰到过一些人，脑子好用，写东西很快。各种技术都有涉猎。但总是不放心让他独立开发设计某个系统。哪怕是相对独立的工具。也会被搞得一塌糊涂。要后面人不停擦屁股。可自己还觉着自己水平很高。这种人浮躁，眼高手低，不愿意细致周全的做好一件完整的事。所以就可以看到他不停的跳来跳去，可在新公司的职位也没有见多么提高。公司非常重视交给一个程序员一件事，他是否能完整，考虑周全的把事情做完。哪怕时间长一点，也不能不做完。这会给工程带来致命的后果。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 5pt; layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;4&lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;，发展待遇&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;从自身经验出发谈一下公司是怎么考虑技术员工待遇的。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;前面提到的6档，粗略了划分了待遇水平。其实到了第三档，你的待遇已经是这个行业所决定的了。而不是某个公司决定的。因为游戏业大量缺乏这样的C++程序员。如果具备这个水平，在几个大城市游戏公司找到工作并不难。大公司提升慢，还有我这种不到百人规模的公司要。所以行业价格才是公司要考虑的。如果给少了，软件项目的C++程序员流失会带来较大影响。但给的多，其实是C++程序员自己的价值增长瓶颈。如果几年下来一直以为自己水平就该拿这么高，结果到了一家整体技术水平比较高的企业，就会彻底傻眼。这个时候再放低心态去重新开始，对技术员来讲就是件很艰难的事了。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;在目前游戏行业技术水平普遍较低的情况下，哄抬程序员工资水平对程序员自身好处也不会很大。就算一个新手本来拿几千的水平，给他1万。他根本就不会知道自己到底有多少水。一年下来也就多拿了3－4万人民币。可耽误的是学习，影响了心态。而那些心态好，知道努力方向的技术人员，干个3－5年后如果有拿期权和股权的机会，比那些一开始虚高的人，身家就不知道高多少倍了。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;下面再谈谈我个人在招聘C++程序的体会。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;做为C++程序员，成长周期比较长。如果是新手（代码量少于2万，没有做过大型项目的），会考察3点。是否踏实肯钻研，有无责任心，以及是否够聪明。如今，满足这三点的人其实不多。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;责任心是人品，决定了是否对公司有贡献。这是最重要的。有些人其实很自私。这种人对公司贡献是负数。而且到头来，自身价值也很难起来。因为技术是要靠游戏的商业成功体现价值的。要取得商业成功，就需要一个团队为一件事付出。是否踏实决定了能学会多少技术知识。关于智商，我是最近2年才意识到人的智商确实有很大差别。干程序这行，智商必须越高越好。否则前途不大。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;如果是有过2－3年C++程序经验的人，应考察的是人品，是否自大，是否有合作意识，是否跳槽频繁。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;首先还是责任心。太自私，太为自己着想，时刻把自己利益看成最重要的人，到哪里都不会受欢迎。无论他技术有多好。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;然后考察的是是否自大。人最容易自大的时候，往往是对一门技术已经入门，取得一定的小成就。但是眼界还没有开阔，没有领略到这个领域真正深入的技术知识。周围缺少好技术的人。这个时候，技术人员都容易自大。适度的自信和自大是允许的。但是目空一切就完蛋了，说明这个技术人员的提升空间很小。 &lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;合作意识是游戏开发的关键。包括交流能力，思考和解决问题的思维方式。一个喜欢独来独往的技术人员，在游戏团队里是个很可怕的事情。因为游戏软件不是一个人能够完成的事情。由于逻辑复杂，需要各种专业技术领域知识，需求变动频繁。每一步都需要团队通力配合。缺乏这种意识，或者对团队开发不适应有抵触的技术人员，在游戏开发领域存活的希望不大。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;做为一个C++程序员，跳槽频繁的履历是很致命的。做C++时间长的人都知道。进入一个庞大的C++软件工程本身就需要不少时间。经过培训，项目熟悉，在为项目做贡献，这个时间短不了。如果一个人经常跳槽，说明他一直没有踏实在一个项目里深入做过核心的东西。或者做失败一个马上跑掉。这种人公司不敢要。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;对于有专项技能的程序员，比如图形程序员。C++只要入门有培训空间即可。但对专业要求比较高。应该是已经在某个技术领域钻研比较深。 当然最后在公司还是得成为使用C++熟练的高级程序员。因为任何专业领域的技术如果要应用到工程中，还必须用C++做工具。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;好的C++游戏程序员，其实不容易找。如果他干得好，早就成为项目核心成员。如果项目不错，自身待遇也会很好很稳定。不需要通过一般应聘渠道应聘。不是被拉到公司做核心技术拿期权，就是自己创业。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;这里我打个比方。网易有个云风。大家都知道他是大话西游2的客户端主程。他是中国第一个做开源C++游戏引擎的人。开放了一整套C++游戏引擎代码。这是他大学时做的。毕业后去网易。有了平台，做成了中国历史上最成功的MMO之一。做为游戏技术人员，他的价值可以说已经是很高的了。到底有多高，我们都不好瞎说什么具体数字。但可以这么刨析一下。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;一个经验丰富的C/C++程序员。有过中国自主研发在线过百万游戏的成功项目经验。目前有网易出钱让其独立领导队伍搞引擎和游戏产品已经快3年。这样的一个履历，经验，本身就价值很高。他在任何公司都可以找到年薪几十万的工作。如果他具备管理才能。哪怕就是项目管理，或者技术管理能力。对于一个上市公司，他能做出的贡献，应该用百万/年量级来衡量。如果他能找到一个商业人士，负责舵手，并且自己具备一定商业能力，独立创业。吸引的天使风险投资也得几千万（否则做不了事，当然）。如果产品能做成，身家到达几千万是很自然的事。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;我相信中国游戏程序员水平，运气，发展空间比他高的人不多。那么我们可以拿他做个标杆。&lt;/font&gt; &lt;/span&gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="layout-grid-mode: char;" &gt;&lt;span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;font face="宋体"&gt;我知道很多人不服他。不过这里说的问题并不是关于他本人的。也不需要对他本人做什么服不服的评判。做为一个社会的人，不是靠能写多少行代码，代码多么优雅水平多么高来衡量身家的。从这点说，技术没有转化为成功商业产品之前，它的价值为0。做为技术人员，社会衡量他价值的标准，并不是要去阅读代码是否质量优越速度飞快。而是看他能为一个成功商业产品或者公司发展做出多少贡献。这个道理，几年前我还不太明白。而且我做为一个技术人员，相信多数技术员同胞们都不太可能从根儿上理解和认同这个看法。这里不是评判水平，而是评判价值。你的价值代表了你能够拿到的待遇。这个不是某个老总说了算，某个公司说了算，而是取决于人均GDP和当前行业发展水平，行业销售额的。我想这个道理也适用于所有游戏制作相关人员。搞制作的都是技术人员。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2232672.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/11/02/2232672.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/10/19/2218211.html</id><title type="text">RAGE来咯～ megatexture技术介绍</title><summary type="text">很久很久以前，ID TECH 5有风声时，我曾经查到一篇论文。就当时id software公司的MEGATEXTURE 技术做了一些介绍。是关于Clipmap的。 id software采用此技术制作了《Quake War》之后，公司很快更新了ID TECH 5（MEGATEXTURE v2.0），采用了类似Virtual Texture的技术，做到了地形和场景物体都使用一张超大全细节贴图做texture streaming。 如今RAGE已经发行。作为id技术fan买了PS3正版之后，很失望......  游戏体验，尤其在贴图绘制上很糟糕。后来发现在PC上的体验其实不错。贴图loading的感觉较小。原因大概因为id software在PS3上优化的不够或者PS3架构就不适合id tech5 。	Clipmap 是用于地形渲染的。 优点是绘制超大细节地形纹理，不受显卡显存限制，而且不需要过多预处理过程。 在使用ID TECH 5技术的《RAGE》中，不再使用clipmap。而是使用一种基于virtual texture的技术 。关于virtual texture技术雏形，最早源自</summary><published>2011-10-19T13:27:00Z</published><updated>2011-10-19T13:27:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/10/19/2218211.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/10/19/2218211.html"/><content type="html">&lt;p&gt;07年写过一篇id software 的megatexture介绍。那时候是基于clipmap技术。制作了《Quake War》之后，id software升级了megatexture技术。改为基于virtual texture，做到了整个世界都只使用一张超大贴图绘制。而不只是地形绘制。这篇是对07年那篇介绍的补充。&lt;/p&gt;&#xD;
&lt;p&gt;水平有限，不保证完全准确&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="PDF下载" href="http://files.cnblogs.com/puzzy3d/RAGE来了-Megatexture信息更新.pdf"&gt;PDF下载&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;PDF版本有图。 没图的版本就发这里了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 22pt; mso-spacerun: 'yes'"&gt;RAGE&lt;font face="宋体"&gt;来了&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 14pt; mso-spacerun: 'yes'"&gt;－－－&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 14pt; mso-spacerun: 'yes'"&gt;关于&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 14pt; mso-spacerun: 'yes'"&gt;&amp;nbsp;ID&amp;nbsp;TECH&amp;nbsp;5&amp;nbsp;MEGATEXTURE&amp;nbsp;&lt;font face="宋体"&gt;的一些技术信息更新&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 14pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;H3D&amp;nbsp;&lt;font face="宋体"&gt;姚勇&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span&gt;&lt;a href="#_Toc12973"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;信息&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span&gt;&lt;a href="#_Toc16328"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;介绍&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span&gt;&lt;a href="#_Toc22818"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;一，目的&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span&gt;&lt;a href="#_Toc12741"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;二，实现&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span&gt;&lt;a href="#_Toc17847"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1&lt;font face="宋体"&gt;，预处理&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc19587"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1.1&lt;font face="宋体"&gt;贴图预处理&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc23459"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1.2&amp;nbsp;&lt;font face="宋体"&gt;几何预处理&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;7&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span&gt;&lt;a href="#_Toc16744"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2&lt;font face="宋体"&gt;，绘制&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;7&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span&gt;&lt;a href="#_Toc7579"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3&lt;font face="宋体"&gt;，具体步骤&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;8&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc19373"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3.1&amp;nbsp;&lt;font face="宋体"&gt;判断本帧绘制要用到哪些&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;8&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc30689"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3.2&amp;nbsp;&lt;font face="宋体"&gt;读入贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;10&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc5305"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3.3&lt;font face="宋体"&gt;，渲染&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;12&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc19398"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;4&lt;font face="宋体"&gt;，镜头快速转动与移动时&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;14&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 42pt" &gt;&lt;span&gt;&lt;a href="#_Toc26641"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;5&lt;font face="宋体"&gt;，一些问题&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;14&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span&gt;&lt;a href="#_Toc20557"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;总结&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;15&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span&gt;&lt;a href="#_Toc7159"&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;PS.&amp;nbsp;H3D2&amp;nbsp;Engine&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt; &lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;15&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h1 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc983"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc12973"&gt;信息&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;很久很久以前，&lt;font face="Times New Roman"&gt;ID&amp;nbsp;TECH&amp;nbsp;5&lt;/font&gt;&lt;font face="宋体"&gt;有风声时，我曾经查到一篇论文。就当时&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&amp;nbsp;software&lt;/font&gt;&lt;font face="宋体"&gt;公司的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MEGATEXTURE&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;技术做了一些介绍。是关于&lt;/font&gt;&lt;font face="Times New Roman"&gt;Clipmap&lt;/font&gt;&lt;font face="宋体"&gt;的。&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&amp;nbsp;software&lt;/font&gt;&lt;font face="宋体"&gt;采用此技术制作了《&lt;/font&gt;&lt;font face="Times New Roman"&gt;Quake&amp;nbsp;War&lt;/font&gt;&lt;font face="宋体"&gt;》之后，公司很快更新了&lt;/font&gt;&lt;font face="Times New Roman"&gt;ID&amp;nbsp;TECH&amp;nbsp;5&lt;/font&gt;&lt;font face="宋体"&gt;（&lt;/font&gt;&lt;font face="Times New Roman"&gt;MEGATEXTURE&amp;nbsp;v2.0&lt;/font&gt;&lt;font face="宋体"&gt;），采用了类似&lt;/font&gt;&lt;font face="Times New Roman"&gt;Virtual&amp;nbsp;Texture&lt;/font&gt;&lt;font face="宋体"&gt;的技术，做到了地形和场景物体都使用一张超大全细节贴图做&lt;/font&gt;&lt;font face="Times New Roman"&gt;texture&amp;nbsp;streaming&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;如今&lt;/font&gt;&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;已经发行。作为&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&lt;/font&gt;&lt;font face="宋体"&gt;技术&lt;/font&gt;&lt;font face="Times New Roman"&gt;fan&lt;/font&gt;&lt;font face="宋体"&gt;买了&lt;/font&gt;&lt;font face="Times New Roman"&gt;PS3&lt;/font&gt;&lt;font face="宋体"&gt;正版之后，很失望&lt;/font&gt;&lt;font face="Times New Roman"&gt;......&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;游戏体验，尤其在贴图绘制上很糟糕。后来发现在&lt;/font&gt;&lt;font face="Times New Roman"&gt;PC&lt;/font&gt;&lt;font face="宋体"&gt;上的体验其实不错。贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;loading&lt;/font&gt;&lt;font face="宋体"&gt;的感觉较小。原因大概因为&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&amp;nbsp;software&lt;/font&gt;&lt;font face="宋体"&gt;在&lt;/font&gt;&lt;font face="Times New Roman"&gt;PS3&lt;/font&gt;&lt;font face="宋体"&gt;上优化的不够或者&lt;/font&gt;&lt;font face="Times New Roman"&gt;PS3&lt;/font&gt;&lt;font face="宋体"&gt;架构就不适合&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&amp;nbsp;tech5&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;Clipmap&amp;nbsp;&lt;font face="宋体"&gt;是用于地形渲染的。&amp;nbsp;优点是绘制超大细节地形纹理，不受显卡显存限制，而且不需要过多预处理过程。&amp;nbsp;在使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;ID&amp;nbsp;TECH&amp;nbsp;5&lt;/font&gt;&lt;font face="宋体"&gt;技术的《&lt;/font&gt;&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;》中，不再使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;clipmap&lt;/font&gt;&lt;font face="宋体"&gt;。而是使用一种基于&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的技术&amp;nbsp;。关于&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;技术雏形，最早源自上个世纪一家名叫&lt;/font&gt;&lt;font face="Times New Roman"&gt;3DLABS&lt;/font&gt;&lt;font face="宋体"&gt;的显卡公司&amp;nbsp;。那时是实现在硬件中的。这点与&lt;/font&gt;&lt;font face="Times New Roman"&gt;clipmap&lt;/font&gt;&lt;font face="宋体"&gt;很类似。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;id&amp;nbsp;software&lt;font face="宋体"&gt;的纯软件技术实现的灵感则来自一篇&lt;/font&gt;&lt;font face="Times New Roman"&gt;04&lt;/font&gt;&lt;font face="宋体"&gt;年的叫《&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;Unified&amp;nbsp;Texture&amp;nbsp;Management&amp;nbsp;for&amp;nbsp;Arbitrary&amp;nbsp;Meshes&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;》论文。最终&lt;font face="Times New Roman"&gt;id&lt;/font&gt;&lt;font face="宋体"&gt;实现的这个技术应该比&lt;/font&gt;&lt;font face="Times New Roman"&gt;3DLABS&lt;/font&gt;&lt;font face="宋体"&gt;的要远远复杂得多。并且包含非常多的技术实现与优化细节。以及全套美术制作流水线。一个引擎和游戏开发了&lt;/font&gt;&lt;font face="Times New Roman"&gt;6&lt;/font&gt;&lt;font face="宋体"&gt;年多，复杂是显而易见。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在&lt;font face="Times New Roman"&gt;08&lt;/font&gt;&lt;font face="宋体"&gt;年&lt;/font&gt;&lt;font face="Times New Roman"&gt;GDC&lt;/font&gt;&lt;font face="宋体"&gt;上一位技术爱好者凭着一些隐约的&lt;/font&gt;&lt;font face="Times New Roman"&gt;ID&amp;nbsp;TECH&amp;nbsp;5&lt;/font&gt;&lt;font face="宋体"&gt;线索，以及有限的&lt;/font&gt;&lt;font face="Times New Roman"&gt;paper&lt;/font&gt;&lt;font face="宋体"&gt;，自己实现了一套类似&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;的技术。&lt;/font&gt;&lt;font face="Times New Roman"&gt;09&lt;/font&gt;&lt;font face="宋体"&gt;年&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&amp;nbsp;software&lt;/font&gt;&lt;font face="宋体"&gt;做技术介绍时，证明这位仁兄的实现和&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&lt;/font&gt;&lt;font face="宋体"&gt;的很像。同时&lt;/font&gt;&lt;font face="Times New Roman"&gt;08&lt;/font&gt;&lt;font face="宋体"&gt;年&lt;/font&gt;&lt;font face="Times New Roman"&gt;crytek&lt;/font&gt;&lt;font face="宋体"&gt;公司也介绍了他们在&lt;/font&gt;&lt;font face="Times New Roman"&gt;cryengine&lt;/font&gt;&lt;font face="宋体"&gt;中实现的&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的想法。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;具体&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的技术，要做成产品级应用，实现非常复杂。是一个工程难度很高的技术。本人没做过。只简单介绍一下。水平有限，不保证信息的完全准确。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h1 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc9161"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc16328"&gt;介绍&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;h2 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc5830"&gt;&lt;/a&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc22818"&gt;一，目的&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;为何需要这个技术。简单讲原因有二。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;第一，显存有限。次世代游戏动辄就要几百兆显存来支持精细的各种贴图（&lt;font face="Times New Roman"&gt;diffuse,&amp;nbsp;specular,&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;各种&lt;/font&gt;&lt;font face="Times New Roman"&gt;mask&lt;/font&gt;&lt;font face="宋体"&gt;，各种&lt;/font&gt;&lt;font face="Times New Roman"&gt;bump&lt;/font&gt;&lt;font face="宋体"&gt;，各种&lt;/font&gt;&lt;font face="Times New Roman"&gt;env,&amp;nbsp;decal,&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;等等等等）。随着游戏制作规模增大，要更多的贴图来满足眼球。只有更精制，没有最精制。关卡没有最大，只有更大。&amp;nbsp;但是显存有限。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;第二，普通制作游戏场景中的各种景物，贴图重复使用是非常关键的事情。因为一个&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;游戏，关卡足够大，虚拟现实沉浸感才强。细节物体要多。只有更多，没有最多。更大的场景更多的景物，需要更多的贴图是一方面，另外一方面，需要美术对贴图的复用考虑更多，在制作上也需要大量精力去调整&lt;/font&gt;&lt;font face="Times New Roman"&gt;UV&lt;/font&gt;&lt;font face="宋体"&gt;和优化。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;为了节省贴图，一般美术制作还需要使用贴图&lt;font face="Times New Roman"&gt;Tilling&lt;/font&gt;&lt;font face="宋体"&gt;。就是一张贴图重复排列开来，铺在面积很大的物体表面上。这样显得很假。这需要美工花极大精力去制作既要重复排列又不能显得重复性太明显的贴图。美工很多工作并不是象绘制图画一样，而是更像个砌墙工，竭力想用重复的材料堆砌出不一样的效果。生产力不够高。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h2 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc27523"&gt;&lt;/a&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc12741"&gt;二，实现&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;virtual&amp;nbsp;texture&lt;font face="宋体"&gt;想法很直接：假设屏幕分辨率&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;1680x1050&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;那么这个屏幕可以显示的贴图图素（&lt;/font&gt;&lt;font face="Times New Roman"&gt;texel&lt;/font&gt;&lt;font face="宋体"&gt;）数据，最多不过&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;1680x1050x3&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;字节。&amp;nbsp;如果我们把屏幕上要显示的景物，面向屏幕的可见部分，精确的制作一张贴图，那么这个贴图最大就需要&lt;/font&gt;&lt;font face="Times New Roman"&gt;1680x1050x3&amp;nbsp;=&amp;nbsp;5MB&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;前提是屏幕上显示的景物，背对屏幕的地方和被遮挡的地方都没有贴图。&amp;nbsp;如果我们能够实时创建这么一张贴图来显示场景，我们显卡的贴图用显存只用&lt;/font&gt;&lt;font face="Times New Roman"&gt;5MB&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;就完全够了。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这种极端的情况用现有的硬件实现起来恐怕不太现实。退而求其次：我们有一些&lt;font face="Times New Roman"&gt;cache&lt;/font&gt;&lt;font face="宋体"&gt;做冗余，景物有一些互相遮挡的绘制，就算&lt;/font&gt;&lt;font face="Times New Roman"&gt;6&lt;/font&gt;&lt;font face="宋体"&gt;张屏幕大小的贴图，重叠遮挡绘制&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;次，每个像素&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;字节，那么在这种很差的情况下，我们也就需要&lt;/font&gt;&lt;font face="Times New Roman"&gt;120MB&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;贴图。在次世代游戏显卡上，这个要求不算过分。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;所以自然而然产生了一个想法。&amp;nbsp;那就是把这个游戏所有要用到的贴图全部放在一张超大的贴图上。在绘制每一帧时，只把屏幕上要显示出来的最高精细度贴图从硬盘上装载到显卡显存，绘制出来就可以了。&amp;nbsp;下一帧玩家镜头移动时，再去装载新景物的高精度贴图。如果不装载高精度贴图，景物可以用很低精度的贴图显糊弄一下&lt;font face="Times New Roman"&gt;(Mipmap&amp;nbsp;Level&lt;/font&gt;&lt;font face="宋体"&gt;很高&lt;/font&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这个过程如果很快，并且只有离玩家较远的新显示景物去装载高精度贴图。那么就可以用一张没有容量限制的超大的贴图（硬盘限制），在显存有限的硬件上，绘制一帧中眼力所及的整个世界。并且这个世界的精度不会太受影响。换句话，游戏世界的贴图制作不用考虑显存大小。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;并且，美术制作这个世界时，只用很直接的&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;步。&lt;/font&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;font face="宋体"&gt;，做网格。&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;，给这个网格绘制唯一的贴图。不用考虑贴图复用。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;ID&amp;nbsp;TECH5&amp;nbsp;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;技术就是要实现这个目标。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;!--EndFragment--&gt;&lt;/p&gt;&#xD;
&lt;h2 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc12703"&gt;&lt;/a&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc17847"&gt;1&lt;font face="黑体"&gt;，预处理&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc19587"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;1.1&lt;font face="宋体"&gt;贴图预处理&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在渲染之前，数据制作阶段时，先需要做一些预处理。最重要的一个处理，就是把世界中用到的所有贴图。全部先放入一张巨大的贴图。这也就是&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;了。我们今后把这张能够绘制整个世界的唯一贴图叫做：&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。这张贴图可以很大，比如边长&lt;/font&gt;&lt;font face="Times New Roman"&gt;200&lt;/font&gt;&lt;font face="宋体"&gt;多万像素，即一张&lt;/font&gt;&lt;font face="Times New Roman"&gt;4T&lt;/font&gt;&lt;font face="宋体"&gt;大小的贴图（当然游戏中没有必要这么大）。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;接着，按照一个固定大小的尺寸&lt;font face="Times New Roman"&gt;(&lt;/font&gt;&lt;font face="宋体"&gt;《&lt;/font&gt;&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;》中，是&lt;/font&gt;&lt;font face="Times New Roman"&gt;128x128)&lt;/font&gt;&lt;font face="宋体"&gt;，把&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;切割成方块。这个方块，我们称作&amp;#8220;页&amp;#8221;（&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;font face="宋体"&gt;）。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在这里，对&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;的处理有点特殊。所有贴图的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;，每一层也都按照这个固定大小切成&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;。如果一张贴图的某一层&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;尺寸小于&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的尺寸，就停止切割。然后把&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;切割出来的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;也放在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;文件里。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;以下是一张贴图和这张贴图的&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;，被切割为&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的样子。从左到右依次是&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&amp;nbsp;level&amp;nbsp;0,1,2,3&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;这也是&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;文件中的内容。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;把这些&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;调入显存，再去显示场景。如果我们故意保留切割的痕迹，让我们看一下场景会是怎么样的：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在《&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;》中，一张&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;是&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;128k&amp;nbsp;x&amp;nbsp;128k&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;大小。这里我们说的&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的尺寸，是最高精度的贴图尺寸。&amp;nbsp;一个&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;是&lt;/font&gt;&lt;font face="Times New Roman"&gt;128&lt;/font&gt;&lt;font face="宋体"&gt;像素。&amp;nbsp;以下是《&lt;/font&gt;&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;》中一个局部的&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;级&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中的样子。可以看到&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;张截图，&amp;nbsp;字体的&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;种颜色代表着&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;级&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;个数字是&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中的全局唯一标号。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;场景截图中，最靠近镜头的标号颜色，是&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;精度最大的层。随着距离渐远，标号颜色也体现了使用精度更低的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;。其中白色的格子表明是&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的分界线。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;LEVEL0&lt;font face="宋体"&gt;：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;LEVEL&amp;nbsp;1:&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;LEVEL2:&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;LEVEL3:&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;注意这里是对同一部位不同&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;textuer&lt;/font&gt;&lt;font face="宋体"&gt;上的截图。这些图都是放在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;一个文件里的。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;再给个例子。这个是一个&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;文件内部可能的一种组织形式：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc23459"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;1.2&amp;nbsp;&lt;font face="宋体"&gt;几何预处理&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;把所有物体的贴图拼接在一起变为一整张&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;（也就是&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;）后，世界中所有的物体都只使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;这么一张贴图。所以世界中物体的坐标都应该换算一下。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;假设&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;是一张&lt;/font&gt;&lt;font face="Times New Roman"&gt;131072&amp;nbsp;x&amp;nbsp;131072&lt;/font&gt;&lt;font face="宋体"&gt;大小的贴图。&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;左下角贴图坐标为&lt;/font&gt;&lt;font face="Times New Roman"&gt;(0&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;0).&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;右上角贴图坐标为&lt;/font&gt;&lt;font face="Times New Roman"&gt;(1&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;1).&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;根据一个物体贴图在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中所在的相对位置，用很简单的换算即可得到这个物体新的贴图坐标。&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;比如一个物体有一张&lt;font face="Times New Roman"&gt;512x256&lt;/font&gt;&lt;font face="宋体"&gt;的长方形贴图。位于&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中从横向第&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;8088&lt;/font&gt;&lt;font face="宋体"&gt;个像素，纵向第&lt;/font&gt;&lt;font face="Times New Roman"&gt;11901&lt;/font&gt;&lt;font face="宋体"&gt;个像素开始。这样物体一个顶点的贴图坐标&lt;/font&gt;&lt;font face="Times New Roman"&gt;u,v&amp;nbsp;(0&amp;lt;u&amp;lt;1&amp;nbsp;,0&amp;lt;v&amp;lt;1)&lt;/font&gt;&lt;font face="宋体"&gt;换算到&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中，就是&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;u'&amp;nbsp;=&amp;nbsp;(u*512&amp;nbsp;+&amp;nbsp;8088)/&amp;nbsp;131072&amp;nbsp;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;v'=&amp;nbsp;(v*256+11901)/131072&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;当贴图坐标&amp;nbsp;&lt;font face="Times New Roman"&gt;u,v&amp;lt;0&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;或者&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;u,v&amp;gt;1&lt;/font&gt;&lt;font face="宋体"&gt;时，说明使用了纹理&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;tilling&lt;/font&gt;&lt;font face="宋体"&gt;。贴图重复排列。这时的处理，需要在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中重复复制物体所用到的贴图。&amp;nbsp;然后把贴图坐标重新换算到&lt;/font&gt;&lt;font face="Times New Roman"&gt;0-1&lt;/font&gt;&lt;font face="宋体"&gt;之间。再进行&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;贴图坐标转换。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: normal; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h2 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc27140"&gt;&lt;/a&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc16744"&gt;2&lt;font face="黑体"&gt;，绘制&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;接下来绘制。我们做最简化情况的假设，有&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;步要走：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;1&lt;font face="宋体"&gt;，判断需要哪些&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;判断屏幕上需要绘制哪些贴图。以及屏幕像素上那个贴图用到的&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;级别。因为世界所有贴图都以&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;为单位，拼在磁盘上的一张&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;里。没法一次性调入显存。要判断出真的需要哪些贴图，以及那个贴图的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;级别。才会把需要的那部分&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;font face="宋体"&gt;装载。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;2&lt;font face="宋体"&gt;，装载&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;靠&lt;font face="Times New Roman"&gt;streaming&lt;/font&gt;&lt;font face="宋体"&gt;把需要的贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;font face="宋体"&gt;装载进来。放入显存的一张实际要使用的贴图（在&lt;/font&gt;&lt;font face="Times New Roman"&gt;id&amp;nbsp;software&lt;/font&gt;&lt;font face="宋体"&gt;的介绍中叫&lt;/font&gt;&lt;font face="Times New Roman"&gt;physical&amp;nbsp;page&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;，在本篇文章中叫&amp;#8220;显存贴图&amp;#8221;。这张显存贴图，是由很多&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;拼凑而成的。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;3&lt;font face="宋体"&gt;，绘制场景物体。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;绘制过程中，在&lt;font face="Times New Roman"&gt;pixel&amp;nbsp;shader&lt;/font&gt;&lt;font face="宋体"&gt;中，把屏幕上所有景物的贴图坐标重新换算一下。以便用显存贴图（贴图内容是从磁盘上靠&lt;/font&gt;&lt;font face="Times New Roman"&gt;streaming&lt;/font&gt;&lt;font face="宋体"&gt;读出来的小块贴图（&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;font face="宋体"&gt;）拼凑而成）来正确绘制场景物体。因为场景中的物体在美术制作时，是按照普通展&lt;/font&gt;&lt;font face="Times New Roman"&gt;UV&lt;/font&gt;&lt;font face="宋体"&gt;的方式制作的。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h2 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc22936"&gt;&lt;/a&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;a name="_Toc7579"&gt;3&lt;font face="黑体"&gt;，具体步骤&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '黑体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;以下对上面说的&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;个步骤做具体介绍&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc19373"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;3.1&amp;nbsp;&lt;font face="宋体"&gt;判断本帧绘制要用到哪些&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;page&lt;font face="宋体"&gt;中不仅仅记录了物体原始贴图的某个部分，同时这个原始贴图的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;也都切成块当作&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;储存在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中。所以这一步骤不仅要找到屏幕上物体用的贴图在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中的位置，还需要判断使用了哪个&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;层，这样才能精确定位出屏幕上物体渲染需要的所有&lt;/font&gt;&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;font face="宋体"&gt;。因为不同&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;级别的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;放在了文件不同地方。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;用一个简单的实现办法概述这个过程：物体贴图坐标本身就说明了所用到的贴图在&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中的位置。只要把物体贴图坐标绘制在屏幕上。再把屏幕内容取下来，逐点判断，就能够得到本帧到底需要哪些&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;来绘制。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;详细一点的解释：因为所有物体只使用&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;这么一张贴图。那么物体贴图坐标肯定是全局唯一的（物体使用的贴图肯定分散在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的不同部分）。我们把物体贴图坐标当成顶点颜色，绘制一遍物体，那么屏幕上的像素就代表了这些物体的每个像素的贴图坐标（这里需要一点光栅化的知识。在绘制三角形时，顶点上的颜色作为填充三角形的颜色，被光栅化插值为三角形扫描线中每个像素的&lt;/font&gt;&lt;font face="Times New Roman"&gt;RGB&lt;/font&gt;&lt;font face="宋体"&gt;值）。换句话，屏幕上绘制出来的就是绘制物体每个像素要用到的贴图坐标。同时在光栅化时，我们在&lt;/font&gt;&lt;font face="Times New Roman"&gt;pixel&amp;nbsp;shader&lt;/font&gt;&lt;font face="宋体"&gt;中还可以计算出每个像素用到贴图采样的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;层级数。&amp;nbsp;（如果这里不懂可以先复习一下光栅化）&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;最后把这个结果输出为一张图片。由&lt;font face="Times New Roman"&gt;CPU&lt;/font&gt;&lt;font face="宋体"&gt;去分析。&amp;nbsp;这里给出图片可能的样子：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;环状不同颜色代表不同&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这个东西在&lt;font face="Times New Roman"&gt;id&amp;nbsp;software&lt;/font&gt;&lt;font face="宋体"&gt;的介绍中，叫&lt;/font&gt;&lt;font face="Times New Roman"&gt;Feedback&amp;nbsp;Buffer&lt;/font&gt;&lt;font face="宋体"&gt;。下面是《&lt;/font&gt;&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;》中的样子&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;接下来就容易了，得到屏幕上的所有像素。逐一分析。每个像素的信息就是对应物体所用到贴图&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的位置信息和&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;级数。&amp;nbsp;这个级数也用来定位&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的位置。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;分析完毕，我们就有了当前屏幕上所有景物要用到的&lt;font face="Times New Roman"&gt;pages&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。我们把本帧需要用到的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;，叫&amp;#8220;活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;&amp;#8221;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1680x1080&amp;nbsp;&lt;font face="宋体"&gt;的屏幕上，像素个数是&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;1814400&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;个。&amp;nbsp;每个像素都检查一遍，&lt;/font&gt;&lt;font face="Times New Roman"&gt;CPU&lt;/font&gt;&lt;font face="宋体"&gt;基本就废掉，不用做其他事情了。&amp;nbsp;优化的办法是对屏幕&lt;/font&gt;&lt;font face="Times New Roman"&gt;buffer&lt;/font&gt;&lt;font face="宋体"&gt;做&lt;/font&gt;&lt;font face="Times New Roman"&gt;down&amp;nbsp;sample&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。也就是缩小屏幕&lt;/font&gt;&lt;font face="Times New Roman"&gt;pbuffer&lt;/font&gt;&lt;font face="宋体"&gt;尺寸。只检查有限的像素。或者干脆直接在一个分辨率很小的&lt;/font&gt;&lt;font face="Times New Roman"&gt;pbuffer&lt;/font&gt;&lt;font face="宋体"&gt;上绘制整个场景。诸如此类。&amp;nbsp;从图上看，&lt;/font&gt;&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;用的是一张分辨率比较低的&lt;/font&gt;&lt;font face="Times New Roman"&gt;Feedback&amp;nbsp;Buffer&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc30689"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;3.2&amp;nbsp;&lt;font face="宋体"&gt;读入贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;显存贴图&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;更新&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;知道要用到哪些&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;之后，就从磁盘读入进来。其中用到的各种&lt;/font&gt;&lt;font face="Times New Roman"&gt;streaming&lt;/font&gt;&lt;font face="宋体"&gt;优化，贴图压缩解压缩，就不提了。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;显卡中维护一张真正最后渲染要用到的贴图。我们叫它&amp;#8220;显存贴图&amp;#8221;或者&amp;#8220;物理页贴图&amp;#8221;&amp;nbsp;（&lt;font face="Times New Roman"&gt;physical&amp;nbsp;page&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;）。这张贴图边长是&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;尺寸的整倍数。读入的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;贴图方块，就一个个在&lt;/font&gt;&lt;font face="Times New Roman"&gt;physical&amp;nbsp;page&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中拼接起来。（拼接的时候每个&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;周围还需要留条边。&amp;nbsp;大家都知道显卡最后纹理映射时，有个双线性插值的问题。而且随着物体离镜头越远，用的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;不同，对不同&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&amp;nbsp;page&lt;/font&gt;&lt;font face="宋体"&gt;周围留的边，还有粗细不同的问题。&amp;nbsp;总之这些零零碎碎的问题充斥着&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;实现的所有步骤。）&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;页表贴图&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;更新&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在这一步很重要的事情，还需要更新一张贴图。这张贴图叫&amp;nbsp;&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;texture&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;－－－&amp;nbsp;&amp;#8220;页表贴图&amp;#8221;。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&amp;#8220;页表贴图&amp;#8221;大致的做法是这样。我们准备一张&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的微缩版本。这个微缩版，有的&lt;/font&gt;&lt;font face="Times New Roman"&gt;paper&lt;/font&gt;&lt;font face="宋体"&gt;叫&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;indirect&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;，有的&lt;/font&gt;&lt;font face="Times New Roman"&gt;paper&lt;/font&gt;&lt;font face="宋体"&gt;叫&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;texture&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;我们用中文，叫&lt;/font&gt;&lt;font face="Times New Roman"&gt;"&lt;/font&gt;&lt;font face="宋体"&gt;页表贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;"&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。页表贴图的每个图素，对应着&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中相应位置的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。图素内容就是对应&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;在显存贴图（&lt;/font&gt;&lt;font face="Times New Roman"&gt;physical&amp;nbsp;page&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;）中的位置信息。比如：如果&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;最高精度那层有&lt;/font&gt;&lt;font face="Times New Roman"&gt;1024x1024&lt;/font&gt;&lt;font face="宋体"&gt;个&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;，那么页表贴图大小就是&lt;/font&gt;&lt;font face="Times New Roman"&gt;1024&amp;nbsp;x&amp;nbsp;1024&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;个图素。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;接着我们定义一下&amp;#8220;活跃&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;&amp;#8221;。&amp;nbsp;活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的意思，是说凡是本帧需要绘制，并从&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;被拷贝到显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;中的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;，都要被标记为活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;页表贴图&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;需要每帧更新，每个活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;对应在页表贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;位置的图素内容，要记录这个活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;在显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;中的位置信息。&amp;nbsp;如图：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;得到结果是：&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;因为在屏幕上的场景，会有&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;。用到不同&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&amp;nbsp;page&lt;/font&gt;&lt;font face="宋体"&gt;的信息，也记录在页表贴图的&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;中。如图&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;显存贴图&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;用&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;填充好之后，更新完&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;teture&lt;/font&gt;&lt;font face="宋体"&gt;就可以用这两张贴图最后渲染了。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc5305"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;3.3&lt;font face="宋体"&gt;，渲染&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;到这个阶段，我们已经实现了&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;的大部分目标，挑选一帧中能够看到的物体用到的贴图，拼起来。这样我们就实时创建了一张贴图，这张贴图上面只有本帧需要绘制在屏幕上的贴图图素（当然肯定有一些冗余）。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;那么如何绘制？&amp;nbsp;因为我们用&lt;font face="Times New Roman"&gt;pages&lt;/font&gt;&lt;font face="宋体"&gt;拼凑而成的这张显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;，即便是相同物体用到的贴图，也都是一个个被切成小方块的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;拼凑而成。&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;与&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;之间根本不挨着。不同&lt;/font&gt;&lt;font face="Times New Roman"&gt;mipmap&lt;/font&gt;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;也都并列排在显存贴图里。根本不连续。用这唯一一张贴图去绘制场景所有物体。需要额外步骤。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;纹理映射的原理是根据一个像素的贴图坐标（注意这里是已经被光栅化后的像素级贴图坐标了），去贴图中采样图素（&lt;font face="Times New Roman"&gt;texel&lt;/font&gt;&lt;font face="宋体"&gt;）。这个图素的颜色值，经过光照处理，就可以直接显示在屏幕像素上。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;用&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;拼凑而成的显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;正确显示场景中所有物体，需要对贴图坐标（物体贴图坐标是在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;贴图空间中的，直接用这个贴图坐标去索引显存贴图（&lt;/font&gt;&lt;font face="Times New Roman"&gt;physical&amp;nbsp;page&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;），得不到正确结果）进行一下转换。使得显示在屏幕上物体的每个像素，精确的对应到显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;上它应该对应的位置。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;我们需要一次像素级别的贴图坐标转换。这个任务可以用&lt;font face="Times New Roman"&gt;indirect&amp;nbsp;texture&amp;nbsp;sampler&lt;/font&gt;&lt;font face="宋体"&gt;也就是间接贴图采样来完成。即，先利用原始贴图坐标，对一张间接贴图进行采样，得到一些必要信息后，再利用这些信息对原始的贴图坐标进行转换以采集显存贴图。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这个间接贴图，其实就是页表贴图&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;以下是过程简述：&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1）&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;用更新后的页表贴图（&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;）与显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;共同绘制场景所有物体&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2）&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在&lt;font face="Times New Roman"&gt;pixel&amp;nbsp;shader&lt;/font&gt;&lt;font face="宋体"&gt;中进行一次贴图坐标间接寻址。从页表贴图（&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;）中得到一个偏移值。用这个偏移值对原始贴图坐标（&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;贴图坐标）进行处理，就变为最终需要采样显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;的贴图坐标。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3）&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;用处理过的贴图坐标采样显存贴图。最后场景中的物体就都按照实际需求绘制出来了。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;如图：&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这张图只是一个示意图。图&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;实际屏幕显示红点的位置，通过贴图坐标和光栅化我们可以知道在&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;上采样的位置（图&lt;/font&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;font face="宋体"&gt;中的红点）。用这个红点的贴图坐标，去采样页表贴图（&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;，图&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;），得到了当前活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;在显存贴图中的位置换算关系。红点在图&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;落到了内容为&amp;#8220;&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;&amp;#8221;的图素里。利用这个换算关系，可以得到最终贴图坐标。在&amp;nbsp;图&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;中，正确的对显存贴图（&lt;/font&gt;&lt;font face="Times New Roman"&gt;physical&amp;nbsp;page&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;）进行采样。图&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;的红点就是需要正确采样的位置。最终得到图&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;像素的颜色值。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc19398"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;4&lt;font face="宋体"&gt;，镜头快速转动与移动时&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;经过&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;个步骤，如果硬盘无限快速，而且显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;的大小能够满足绘制本帧所有物体最大精度贴图。那么我们会看到一个无限大的世界，有着最高贴图精度。流畅地在眼前飘过。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;事实上，没有这么理想的情况。&amp;nbsp;磁盘速度不可能那么快。显存贴图&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;有时候并不满足绘制当前镜头中所有物体最大精度贴图的容量。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这就是我们在实际《&lt;font face="Times New Roman"&gt;RAGE&lt;/font&gt;&lt;font face="宋体"&gt;》游戏运行过程中看到的景象。一旦摇动一下镜头，所有物体的贴图都重新回到最模糊，然后慢慢变得精细。这个现象在&lt;/font&gt;&lt;font face="Times New Roman"&gt;PS3&lt;/font&gt;&lt;font face="宋体"&gt;上尤其严重。&lt;/font&gt;&lt;font face="Times New Roman"&gt;PS3&lt;/font&gt;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;IO&lt;/font&gt;&lt;font face="宋体"&gt;是严重瓶颈。理论上就无法保证足够量的精细贴图在一定时间内读入显存。在一个&amp;nbsp;光驱，硬盘，内存，显存的&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;级&lt;/font&gt;&lt;font face="Times New Roman"&gt;cache&lt;/font&gt;&lt;font face="宋体"&gt;系统中，任何一个地方的瓶颈足以毁灭&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;美好的初衷。这是为什么。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;回顾&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;技术的&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;个步骤。如果磁盘是瓶颈，很多活跃&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;无法从磁盘调入显存。那么显存贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;就无法在足够时间内拼凑出绘制当前场景所需要的全部贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;怎么办。&amp;nbsp;这个时候有很多办法可想。&amp;nbsp;一个最简单的办法是，没有贴图的景物，就绘制个马赛克贴图好了。。。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;当然，商业产品不能这么做。&amp;nbsp;如果调入高精度贴图来不及，那么就先把最低精度的贴图调入进来。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;如果最低精度都进不来，那么卡帧，让用户休息一下。。。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;从这里看出，&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;受硬件制约依旧较大。只不过从明确的显存上限，降低到对&lt;/font&gt;&lt;font face="Times New Roman"&gt;IO&lt;/font&gt;&lt;font face="宋体"&gt;速度的一定要求。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;IO&lt;font face="宋体"&gt;速度对于&lt;/font&gt;&lt;font face="Times New Roman"&gt;PC&lt;/font&gt;&lt;font face="宋体"&gt;，可能越来越快。对于&lt;/font&gt;&lt;font face="Times New Roman"&gt;XBOX360&lt;/font&gt;&lt;font face="宋体"&gt;，卡马克爱不释手自然会量身定做。至于&lt;/font&gt;&lt;font face="Times New Roman"&gt;PS3&lt;/font&gt;&lt;font face="宋体"&gt;，那就算那些买正版的家伙们倒霉了。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc26641"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;5&lt;font face="宋体"&gt;，一些问题&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 16pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;另外一种情况，当前帧的场景中物体太多了，所用到的贴图总量，超过了显存贴图&lt;font face="Times New Roman"&gt;(physical&amp;nbsp;page&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;容量。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;很多物体都没有贴图来绘制。自然只能空在那里。解决方案无非就是尽量合理的把场景中物体用到的贴图量控制一下。这里面要解决的工程问题无限多。要自研此技术做产品的人，只能自求多福了。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;还有一个问题。在第一步用页表贴图&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;绘制时，页表贴图是一张完整调入显卡显存的贴图。它是&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的缩小版。根据&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;的大小来缩小。一个&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;相当于这个贴图的一个像素。但是当&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;中&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;数量太多，以至于页表贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;的大小都超标了，这就是个很麻烦的事了。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;我们假设一个&lt;font face="Times New Roman"&gt;page&amp;nbsp;512x512&lt;/font&gt;&lt;font face="宋体"&gt;像素（&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&lt;/font&gt;&lt;font face="宋体"&gt;大小的制定也有讲究，不细表）。如果想要在页表贴图&lt;/font&gt;&lt;font face="Times New Roman"&gt;(page&amp;nbsp;table&amp;nbsp;texture)&lt;/font&gt;&lt;font face="宋体"&gt;保持在&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;4096x4096&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;大小，那么我们的一张&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;最大边长只能是&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;4096x512&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;像素。&amp;nbsp;也就是这张&lt;/font&gt;&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;最大也就&lt;/font&gt;&lt;font face="Times New Roman"&gt;2097152&amp;nbsp;x&amp;nbsp;2097152&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;像素大小。一个像素算&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;字节。那么最大的一张图容量是&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;4096&amp;nbsp;G&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;。&amp;nbsp;难道我们与时俱进的玩家就按么容易满足&lt;/font&gt;&lt;font face="Times New Roman"&gt;4T&lt;/font&gt;&lt;font face="宋体"&gt;的贴图容量么？随着祖国日新月异国富民强，人民群众的审美娱乐需求一日提高，早晚有一天。。。。。。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;如果真有这种情况，用多张页表贴图是一种自然的选择。。。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;同时还存在其它问题。比如浮点贴图坐标的精度问题。显卡内部对贴图坐标浮点精度的处理和标准&lt;font face="Times New Roman"&gt;IEEE&lt;/font&gt;&lt;font face="宋体"&gt;单精浮点标准是不一样的。另外，&lt;/font&gt;&lt;font face="Times New Roman"&gt;page&amp;nbsp;table&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;是一张用来索引贴图坐标的贴图，这张贴图本身的内容就是贴图坐标，所以也需要用浮点格式。。。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;很大的情况下，各种&lt;/font&gt;&lt;font face="Times New Roman"&gt;buffer&lt;/font&gt;&lt;font face="宋体"&gt;各种贴图坐标浮点误差的处理，也令人头疼。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h1 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;a name="_Toc20557"&gt;&lt;/a&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; font-weight: bold; mso-spacerun: 'yes'"&gt;总结&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 22pt; font-weight: bold; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;基于&lt;font face="Times New Roman"&gt;virtual&amp;nbsp;texture&lt;/font&gt;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;megatexture&lt;/font&gt;&lt;font face="宋体"&gt;技术。充斥着无数工程细节问题。各种多线程优化问题。各种&lt;/font&gt;&lt;font face="Times New Roman"&gt;IO&lt;/font&gt;&lt;font face="宋体"&gt;优化，浮点误差，带宽瓶颈等问题。在&lt;/font&gt;&lt;font face="Times New Roman"&gt;PC&lt;/font&gt;&lt;font face="宋体"&gt;上，&lt;/font&gt;&lt;font face="Times New Roman"&gt;ATI&lt;/font&gt;&lt;font face="宋体"&gt;显卡险些全军覆没也暴露了在兼容性方面的问题。其它还有技术与工具集生产流水线的集成问题等。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;id&amp;nbsp;software&lt;font face="宋体"&gt;在此领域推出成熟技术解决方案，令人钦佩。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;megatexture&lt;font face="宋体"&gt;解决了静态纹理容量问题。但游戏的表现，并不完全取决于静态光影和贴图细致度。在&lt;/font&gt;&lt;font face="Times New Roman"&gt;ID&amp;nbsp;TECH&amp;nbsp;6&lt;/font&gt;&lt;font face="宋体"&gt;中，卡马克打算用&lt;/font&gt;&lt;font face="Times New Roman"&gt;voxel&amp;nbsp;rendering&lt;/font&gt;&lt;font face="宋体"&gt;把几何数据容量问题也一并解决掉，并且抛弃多边形光栅化渲染，带玩家走入另外一个细节复杂度无限高的虚拟现实世界。我们可以拭目以待。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2011&lt;font face="宋体"&gt;－&lt;/font&gt;&lt;font face="Times New Roman"&gt;10&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h1 style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;span&gt;&lt;a href="http://h3d.com.cn/downloads/h3d2_engine-run.mp4"&gt;&lt;span style="font-family: '宋体'; color: rgb(0,0,255); font-size: 10pt; text-decoration: underline; mso-spacerun: 'yes'" &gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;!--EndFragment--&gt;&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2218211.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/10/19/2218211.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/05/20/2052350.html</id><title type="text">艺术创作和工程</title><summary type="text">艺术创作和工程有两个经历让我对这个问题产生一些感想。这些感想没有答案。只是一些思索。首先，游戏制作的复杂，让我在步入中年的这几年颜面尽失。遇到很多挫折。其次，本人糊口为生，占据游戏制作1/3的软件制作过程，依然没有切实抓到要害，拿到满意结果。参加了个软件需求分析师培训。期间被问了一个问题。软件过程是一种艺术创造活动还是工程活动（顺带提一句，作为软件人员，不听一听一个抽烟喝酒搞军工工程的老教授讲一下软件工程，人生不够完整）。作为一个前艺人，前音乐人，渗淫艺术创作活动十几年的人，我对艺术创造的过程的解释是这样：基于个人审美体验，创作灵感，创新，和艺术技能的一种活动。经过不断反复修改，力图创造出作品</summary><published>2011-05-20T13:47:00Z</published><updated>2011-05-20T13:47:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/20/2052350.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/20/2052350.html"/><content type="html">&lt;div style="layout-grid:  15.6pt none" &gt;&#xD;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;艺术创作和工程&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;有两个经历让我对这个问题产生一些感想。这些感想没有答案。只是一些思索。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;首先，游戏制作的复杂，让我在步入中年的这几年颜面尽失。遇到很多挫折。其次，本人糊口为生，占据游戏制作&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1/3&lt;font face="宋体"&gt;的软件制作过程，依然没有切实抓到要害，拿到满意结果。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;参加了个软件需求分析师培训。期间被问了一个问题。软件过程是一种艺术创造活动还是工程活动（顺带提一句，作为软件人员，不听一听一个抽烟喝酒搞军工工程的老教授讲一下软件工程，人生不够完整）。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;作为一个前艺人，前音乐人，渗淫艺术创作活动十几年的人，我对艺术创造的过程的解释是这样：基于个人审美体验，创作灵感，创新，和艺术技能的一种活动。经过不断反复修改，力图创造出作品，使得其他人通过观感此作品，得以得到到某种审美体验和娱乐功能。这种过程本质是基于个人的感受与创作活动。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;作为一个资深&lt;font face="Times New Roman"&gt;C++&lt;/font&gt;&lt;font face="宋体"&gt;程序员，尝试制作先进&lt;/font&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;引擎工具集和高技术游戏软件的老程序员和老工程师，我对游戏软件制作的理解是这样：基于水平参差的多人团队（几十人到上百人），以及跨越几年时间的逻辑（软件），工艺（策划），艺术（美术与音乐）三者的创造活动，以及遵循固有过程，辅以动态变更，以一种相对不变的方法论指导下的工程活动为基础，制作电子娱乐产品，提供娱乐服务的过程。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;那么制作软件本身到底是艺术创作还是工程活动。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;首先软件制作，是逻辑的创造。逻辑创造基于灵感。虽然有方法论指导（计算机编程方法，&lt;font face="Times New Roman"&gt;OO&lt;/font&gt;&lt;font face="宋体"&gt;原则等），但针对每个问题，归根结底是编程人员对一个具体问题的逻辑创作。继而针对这个创作进行完善，修改。达到符合需求的目标。就新产品创造，新产品需求定义，程序设计，编代码这些步骤而言，都是一种创作的过程。这种过程的创造性是不可忽视的。我们经常把使用某种语言比做类似修轮胎的手艺。这在具体公司的工程实践和培训是没错的。但是究其本质，轮胎只有一种，材料只有橡胶一种，修补方式也只有涂胶水吹干一种。和编程并没有太大关系。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;其次，一个公司的软件开发，宏观上又必然是工程。类似一座桥梁，或者一个高层大楼的修建。都是从制定目标（需求），制定蓝图，完善设计（设计，接口）。搭建地基，混凝土浇筑（框架），装修（功能代码），验收（测试），交付（部署），开卖（收费）等步骤。都是需要很多人，协同，按照固定的目标，固定的方法，固定的流程，固定的标准，一步步完成。&amp;nbsp;这是工程。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;以下是&lt;font face="Times New Roman"&gt;baidu&lt;/font&gt;&lt;font face="宋体"&gt;词条。我觉着说的也算靠谱。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;就广义而言，工程则定义为由一群人为达到某种目的，在一个较长时间周期内进行协作活动的过程。&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这其实就是说一群人花一些时间一起干一件事。&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;就软件工程而言，&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;工程这个东西和艺术创作是风马牛完全不相干的两件事。但是软件制作和这两者又都有关系。这牵扯到一个形而上的问题。即，创造活动是否可以遵循一套方法论和理论体系的指导进行。在工作中和同事进行的交流中。我对这个问题并不确定。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;在音乐，尤其严肃音乐创作中，音乐创作必然是遵循一套严谨的理论体系和方法论的。这就是《和声学》，《曲调作法》，《音乐基础理论》等体系。即便在&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;JAZZ,&lt;font face="宋体"&gt;流行乐，现代音乐中，也是对这些经典音乐理论体系的一种拓展和变化。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;那么游戏创作是什么样子的。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;举个例子。一个关于策划问题的。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;由于项目关系，我从理论上推导出一个结论：生物（&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2&lt;font face="宋体"&gt;足和&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;足）以及无重力机械的竞速游戏模式都是不可能带来足够游戏性的。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;理论基于竞速模式游戏性的分析。简单说，&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;1&lt;font face="宋体"&gt;，竞速来自于对竞速物体的操控和操控带来的反馈。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;2&lt;font face="宋体"&gt;，操控竞速物体带来反馈的必要条件是，不同状态下，不同操控带来的反馈多样性。以及操控物体与环境交互时间足够长。&amp;nbsp;这点是关键。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;展开：汽车由于轮胎，悬挂，滚动摩擦，滑动摩擦，刚体动力学，以及加油，刹车，左右前轮方向控制，与赛道路面接触带来的反馈，给玩家带来的反馈非常多样，从而使得速度感和转弯刹车加速时的操控感非常强烈。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;3&lt;font face="宋体"&gt;，由于玩家操控而得到的反馈比较真实。同时操作难度可控制。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt; margin-left: 21pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这就像开前驱，前置后驱，中置后驱跑车在路面竞速的乐趣。这三种车在转弯时的操控与反应天差地远。自然开车感受乐趣就是不同。具体参考&lt;font face="Times New Roman"&gt;GT5&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;手册《&lt;/font&gt;&lt;font face="Times New Roman"&gt;ULTIMATED&amp;nbsp;CAR&amp;nbsp;GUIDE&lt;/font&gt;&lt;font face="宋体"&gt;》。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;反推生物&lt;font face="Times New Roman"&gt;/&lt;/font&gt;&lt;font face="宋体"&gt;无重力机械竞速游戏性：&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;由于无重力机械与地面摩擦无关。同时又不象飞机，与机翼尾翼和速度等空气动力学元素相关。操控相关的反馈因素少得可怜。这种贫瘠的反馈元素导致游戏性极度丧失。简单说，同样做加油刹车左右方向的操作，无重力赛车的反馈可能性比真实赛车少不知道多少个数量级。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;生物由于是&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;足着地，始终是静止摩擦带动物体运动。没有滑动摩擦与刚体动力的旋转，翻转等变化因素。同样使得操控反馈元素极端贫瘠。玩家得到的操作反馈非常少。由于四足接触地面时与路面始终相对静止，这样等于操作的物体与环境交互时间几乎为&lt;/font&gt;&lt;font face="Times New Roman"&gt;0.&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;造成游戏交互性也几乎为&lt;/font&gt;&lt;font face="Times New Roman"&gt;0.&lt;/font&gt;&lt;font face="宋体"&gt;所以游戏性也几乎为&lt;/font&gt;&lt;font face="Times New Roman"&gt;0.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;这就是游戏发展史上几十年，从来没有生物竞速游戏这个东西。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;形而上的理论推导可以验证一种创新游戏性的可行性。但这种工程化的东西无法指导一种创新游戏性的产生与制作。这是策划游戏的过程。基于创作，但是可以由理论验证。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;类比软件制作。它也是基于创作，由工程方法指导的么？&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;培训老师给出的答案是，软件制作中，主体性的活动是工程。创造只在局部进行。我比较认可。&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2052350.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/05/20/2052350.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/05/17/2048605.html</id><title type="text">IT理工宅男的视野</title><summary type="text">游戏制作业走捷径的少。即便你看到人家是走捷径了，背后其实也有很多积累。只不过咱们不知道。比如盛大那个传奇为什么赌对了。因为之前烧了几千万，去做动漫还是什么相关领域。为啥人家有这个机会烧，因为之前他做了很多工作积累的机会。为什么他能得到钱，因为他之前一直做的事。 技术人员钻技术，不太容易了解这个世界发生的事情。但比较容易以为自己全都知道。举两个例子。 现在大家都知道陈一周，周鸿祎了。 这两个人我都有过私交。不深。原因也是因为一些商务的事。朋友的朋友之类。现在他们俩的公司都上市了，于是我们知道这俩人“成功”了。02年认识的陈一周，那时候卖chinaren他已经套现了。之后经过9年坚持他投资购买组.</summary><published>2011-05-17T02:48:00Z</published><updated>2011-05-17T02:48:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/17/2048605.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/17/2048605.html"/><content type="html">&amp;nbsp;&amp;nbsp;&amp;nbsp; 游戏制作业走捷径的少。即便你看到人家是走捷径了，背后其实也有很多积累。只不过咱们不知道。比如盛大那个传奇为什么赌对了。因为之前烧了几千万，去做动漫还是什么相关领域。为啥人家有这个机会烧，因为之前他做了很多工作积累的机会。为什么他能得到钱，因为他之前一直做的事。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 技术人员钻技术，不太容易了解这个世界发生的事情。但比较容易以为自己全都知道。举两个例子。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在大家都知道陈一周，周鸿祎了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这两个人我都有过私交。不深。原因也是因为一些商务的事。朋友的朋友之类。现在他们俩的公司都上市了，于是我们知道这俩人&amp;#8220;成功&amp;#8221;了。&lt;br /&gt;02年认识的陈一周，那时候卖chinaren他已经套现了。之后经过9年坚持他投资购买组合互联网公司的理念。直到11年才搞成。中间几次交道。都觉着有这样那样的问题。但最后华尔街吃他这一套。你可以从技术角度说，切，没什么了不起，没有什么高精尖技术，游戏也就那样，只会买几个公司。&lt;br /&gt;但其实只不过人家玩的根本不是技术而已。但同样坚持做了超过10年。chinaren为什么人家愿意给钱烧，还是因为他之前坚持做的事情。一切都是有&lt;br /&gt;原因的。只不过看清这些，需要技术制作领域以外的视野。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 周鸿祎一直很有名声。从3721到yahoo到360。从做流氓软件到杀流氓软件。但最终得以让美国人民掏钱买股票的还是因为由这个说起来的故事。人家就是和QQ一样占领了桌面。这中间经过了多少年大家也可以算算。同样坚持了一个目标做了很久。个人接触，这个人有鲜明个性，并且和陈一周一样，对所坚持的事情有常人没有的深刻理解与创造冲动。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 回到制作和技术。都一样。做任何技术到了后来，功夫都在功外。哪怕搞个架构设计，都需要对这个世界的事物有了更深的了解，才能有更宏观的把控与抽象能力。策划就更是这样。对人对事都不了解，何谈利用各种手段激发起他们的兴趣。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 说到底，视野是非常关键的要素。每一个成功都有背后极其确定的因素。绝对没有天上掉下来的馅饼。即便说是投胎好，这也是确定的要素。更何况普通人。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 做H3D和在H3D中做事，除了有个环境可以搞技术。更多的还是有一个视野更宽的平台。能让人从一个&amp;#8220;技术员儿&amp;#8221;或者&amp;#8220;制作者&amp;#8221;再提升一些。不再拘泥一些典型IT理工宅男的鸡毛蒜皮自艾自怜。&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2048605.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/05/17/2048605.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/05/16/2048125.html</id><title type="text">IT理工宅男的目标与坚持</title><summary type="text">宅男的目标</summary><published>2011-05-16T13:51:00Z</published><updated>2011-05-16T13:51:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/16/2048125.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/16/2048125.html"/><content type="html">&amp;nbsp;&amp;nbsp;&amp;nbsp; 最近论坛有人说到同事跳槽，社会浮躁，其实都是钱的问题。我认为钱的问题其实是很正当的理由。主要的问题在于是为了短期利益还是为了中长期的价值提升。短期的意思是1－2年。中长期是3年和3年以上。类似气宗和剑宗。如果天性够机灵，把招式玩出花。一样能娶美貌如花的大佬女儿，前呼后应，腰缠万贯。社会上玩得转，靠跳槽和抖机灵就能获得很大利益。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但是长期的观察我发现，作为IT理工男出身的制作人员，99.999% 都会高估自己这方面的聪明劲儿。最终下场也许就是为了一个月1000人民币的利益放弃高10倍的利益。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般人都这么想：我要知道这件事肯定能成，我就一定坚持做.这个想法逻辑的荒谬之处，不用我提了。但多数人的想法恰恰就这么荒谬。这样很好。否则大家都是成功人士都精明要死，笨人就没机会了。&lt;br /&gt;&amp;nbsp;说钱是正当的理由。关键在于如何达到目标。而且我的意思不是不争，而是要更聪明的争。不过说实在的，其实更多情况是，很多人争的根本不是这个目标，而是争心态。要做主策，要做主程，要做主要人物。他们把要做主要人物要面子，和实现目标给搞混了。比如论坛里说的那个情况。项目成功之际跳槽了。其实在经历过一个成功项目之后即便拿着不高的薪水，那也预示着今后更高的起点。何止当前薪水的一倍。非得冲着DOUBLE的薪水跑到一个从新开始的项目里，没有成功经验的团队，最后带来的必然是下一次跳槽。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 坚定地为了首付和老婆孩子热炕头而坚持，和为了做成功的游戏和制作人员而坚持，本质没区别。都是坚持。只不过很多人根本不是为了某个目标而坚持。只是为了和目标无关的东西在不断取舍。以及转换目标。这是一种年轻人都会犯的可笑错误。我为此付出很多代价。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 举个例子。比如我的目标是做3D MMO游戏。然后从3D技术开始搞。但失败了很多次。后来总结。得到一个很奇幻的结论。我其实是把搞3D技术当成了目标。而不是3D游戏。这会导致什么？很简单。没注重市场，产品开发，策划，管理，工具，团队组建，资金。除了绘制三角形我几乎什么都没注重。下场如何？很简单，三角形都画不好了。这就是典型的以为自己在为目标努力，其实根本没有为真正目标做任何（很少）事情。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 人年轻时，大部分时间都是在努力干着一件和真实目标关系不大的事情。并且自己还给自己找很多借口。比如很多技术人员，努力提高技术，钻研，写代码，熬夜。然后抱怨30岁的时候无法首付。这是一件很荒谬的事，你的目标是提高技术。你的目标根本不是把技术转为产品实现价值。搞技术不等于利用技术赚到首付。这根本是两码事。2个目标。你在为第一个目标奋斗，可是却在为无法实现第二个目标而抱怨。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 真想明确自己的目标，本身就很难。明确后专注为目标做事。就更难。但是一旦明确，并且专注做。必然有成效。这是我在H3D得到最宝贵的东西之一。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有人说，荒谬之处并不尽然，比如大家都有各种理由。如，1.家庭责任；2.社会地位，和昔日同学同事比较后的落差，毕竟我们国家还是个攀比型国家，总人很多人会把社会地方和个人价值和房屋挂等号的；3.技术提高的附加值是薪酬提高，大多数人是因为生存或没更好的选择而从事技术，面对现实中房价的攀升和本身技术能力的瓶颈无法首付而抱怨是很正常的，没有爱和理想是很难理解为了理想而甘愿舍弃一切不断努力拼搏的行为的。另外人的毅力和斗志是大大不同的，当理想和热情被消磨光的时候大多数人剩下的就是糊口。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 我觉着事情没有绝对的。我说的是个人观察到的普遍性问题。不说最好。只说最坏情况。那就是过快的更换目标。今天要搞技术，明天要家庭责任，后天要社会地位，大后天要技术附加值。 那么我问一下，这到底是在要什么呢？目标有优先级。可以多个同时搞，但一个时间只会有一个是优先级最高的。所以那3个理由，并没有回答我说的不合理现象。那就是，自己所努力做的，并不是自己的真正目标。那些客观原因必定存在，但就目标而言，只是一些借口。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2048125.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/05/16/2048125.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/05/05/2038267.html</id><title type="text">The Power of H3D2, 截图，视频！ 少女时代 gee gee gee</title><summary type="text">H3D2 ENGINE</summary><published>2011-05-05T13:29:00Z</published><updated>2011-05-05T13:29:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/05/2038267.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/05/2038267.html"/><content type="html">&lt;p&gt;少女时代的gee gee gee 录像&lt;/p&gt;&#xD;
&lt;p&gt;h3d.com.cn/downloads/h3d2_engine-gee.mp4&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;这个场景灯光比较简单，主要是阳光的方向光与几个角色辅助补光。布光原理和经典人像摄影布光差不多。由于都是实时光源，所以游戏美术的制作逐渐进入了一个新的领域。更加类似摄影和摄像的艺术创作。这种感知也是一点点在DEMO搭建中得来了。技术是为了应用服务的。光有技术远远不够。重要的在于有能够让美术发挥创造力的工具链。以及能够给美术以指导的新技术下的创作方法。&lt;/p&gt;&#xD;
&lt;p&gt;新技术给游戏制作带来的不仅仅是更多的三角形，更高的帧率，更亮更复杂的模型。 而是隐隐约约在真正实现人脑中的构想，在实现某种可以称之为艺术创作的领域，开始发生点滴细微的作用。这种作用受限于硬件与技术水平，还只是稍微有点朦胧的意味，但并不明晰。在制作技术时，并没有任何这样的感觉。而当工具日益完善，美术的创造力开始加入时，你才能够感受所谓下一代技术在游戏制作中的新鲜作用。&lt;br /&gt;这次材质偏重对牛仔和棉布等模拟&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine8.jpg" width="1280" height="720" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine6.jpg" width="1024" height="770" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine15.jpg" width="1024" height="576" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2038267.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/05/05/2038267.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2011/05/04/2036327.html</id><title type="text">The Power of H3D2 !  截图，视频！</title><summary type="text">H3D2 游戏引擎！</summary><published>2011-05-04T04:31:00Z</published><updated>2011-05-04T04:31:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/04/2036327.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2011/05/04/2036327.html"/><content type="html">&lt;p&gt;永航科技的游戏引擎。新制作的延迟渲染功能。&lt;/p&gt;&#xD;
&lt;p&gt;在2010年4月后开始研发。2010年12月完成的DEMO。因为一些商业原因，今天才发布。目前公司即将使用此引擎开始制作游戏。需要图形程序员人才。欢迎加盟！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.horizon3d.com.cn/"&gt;http://www.horizon3d.com.cn/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;所有截图均是实时渲染，没有后期处理（实际上在引擎内部有一个很强大的后期处理模块，景深，动态模糊，包括PHOTOSHOP中调节曲线，对比度，饱和度，色阶等都可以实时完成）。其中教堂场景中放置了100多个实时光源。每个光源可以独立用曲线控制颜色，亮度，锥度，衰减等。结合之前的室外地形和传统multi-pass渲染管道。以及相应的室外/室内场景编辑器工具集。游戏引擎内核功能基本研发完毕。下一步是继续添加视觉效果。完善工具集，多核渲染，DX11的表面细分等。&lt;/p&gt;&#xD;
&lt;p&gt;少女时代 run devil run 截图1&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine1.jpg" width="1280" height="720" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;少女时代 run devil run 截图2&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine2.jpg" width="1280" height="720" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;少女时代 run devil run 截图3&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine3.jpg" width="1280" height="720" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;少女时代 run devil run 截图4&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine4.jpg" width="1024" height="728" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;少女时代 run devil run 截图5&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine5.jpg" width="1024" height="686" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;H3D2 ENGINE少女时代 RUN DEVIL RUN 实时渲染演示视频：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://h3d.com.cn/downloads/h3d2_engine-run.mp4"&gt;http://h3d.com.cn/downloads/h3d2_engine-run.mp4&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下一篇发另外一个视频&lt;/p&gt;&#xD;
&lt;p&gt;少女时代：gee gee gee&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/screenshots/H3D2_Engine15.jpg" width="1024" height="576" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于H3D2&lt;/p&gt;&#xD;
&lt;p&gt;H3D是个具有悠久历史的研发project 。。。 它是一个技术TEAM的代号。。。（。。跳过很多年时间），目前永航科技公司正在继续进行自主研发3D游戏引擎的工作。这个引擎的第一代（DX7,DX8）经过了一个成功网络游戏（QQ炫舞，一个拥有1.5亿注册用户，几千万活跃玩家，188万最高同时在线玩家）的锻炼。目前准备迈入它第二个阶段。一个基于DX9 shader的multipass传统渲染和pre-light pass延迟着色管道的引擎。最主要的是，它完全是基于实际游戏工程而来。对于一个要应付几千万玩家的PC电脑各种配置，以及要应付5个G游戏内容制作的游戏引擎，它的开发必须满足无数庞杂现实的需求。它的开发不同于学术研究或者技术试验性质的project。参与H3D2的开发过程本身，就是一个引擎工具程序员真正具备技术能力和个人价值的过程。如何赋予技术价值。在没有开发过一个实际工程应用的游戏引擎之前。是不会有答案的。&lt;/p&gt;&#xD;
&lt;p&gt;欢迎发简历。著名从网络看到介绍即可。～～～&lt;/p&gt;&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/2036327.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2011/05/04/2036327.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2010/04/30/1724859.html</id><title type="text">去年的一些截图</title><summary type="text">前向渲染是去年完成的。今年主要在做延迟渲染</summary><published>2010-04-30T03:44:00Z</published><updated>2010-04-30T03:44:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2010/04/30/1724859.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2010/04/30/1724859.html"/><content type="html">&lt;p&gt;前向渲染是去年完成的。今年主要在做延迟渲染&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/19.JPG" width="1032" height="801" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/26.JPG" width="1032" height="745" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/5.jpg" width="1024" height="768" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/27.JPG" width="1021" height="766" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/puzzy3d/13.jpg" width="1024" height="768" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/puzzy3d/aggbug/1724859.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/puzzy3d/archive/2010/04/30/1724859.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2009/12/01/1614596.html</id><title type="text">The New Beginning-H3D new Project: ProjectH</title><summary type="text">new 3dengine project</summary><published>2009-12-01T07:13:00Z</published><updated>2009-12-01T07:13:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2009/12/01/1614596.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2009/12/01/1614596.html"/></entry><entry><id>http://www.cnblogs.com/puzzy3d/archive/2008/07/31/1257085.html</id><title type="text">Game Programming Gems4 1.7 代码错误</title><summary type="text">Game Programming Gems4 1.7 代码错误</summary><published>2008-07-31T02:34:00Z</published><updated>2008-07-31T02:34:00Z</updated><author><name>puzzy3d</name><uri>http://www.cnblogs.com/puzzy3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/puzzy3d/archive/2008/07/31/1257085.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/puzzy3d/archive/2008/07/31/1257085.html"/></entry></feed>
