<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_cp的小屋</title><subtitle type="text">not yet</subtitle><id>http://feed.cnblogs.com/blog/u/20242/rss</id><updated>2008-11-21T15:57:06Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/20242/rss"/><entry><id>http://www.cnblogs.com/cproom/archive/2008/11/21/1338701.html</id><title type="text">用Nvidia的PerfHud剖析《寻仙》</title><summary type="text"> 用Nvidia的PerfHud剖析Direct3D程序有两个关键步骤，一是找到CreateDevice()的调用位置，二是修改传入CreateDevice()的前两个参数使之满足PerfHud的要求，在一般的系统上第一个参数传1，第二个参数传2，也可以将应用程序原来传入的前两个参数分别加一。定位CreateDevice()有两种方式，一是动态跟踪，二是静态分析。动态跟踪就是用调试器起动应用程序，在D3d9.dll中的CreateDevice()函数处下断点。动态跟踪具有速度快、定位准确的特点，是首选。但很多时候网络游戏的客户端都是通过另一个程序起动的（比如自动更新程序），无法由调试器直接起动，也就无法动态跟踪，这时可以考虑静态分析的方法，后面本文会有详细介绍。</summary><published>2008-11-21T14:23:00Z</published><updated>2008-11-21T14:23:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2008/11/21/1338701.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2008/11/21/1338701.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2008/10/30/1323058.html</id><title type="text">一种强大、灵活的方法，通过游戏逻辑参数化的控制特效表现</title><summary type="text">    但是随着我们对游戏表现力要求的提高，我们不再满足于仅仅按设定好的参数回放特效效果，而是希望特效表现与游戏逻辑挂钩，使某些特效元素的某些参数随着游戏逻辑动态变化。比如我们有一个发动机尾烟的特效，其中有一个白烟粒子系统，一个黑烟粒子系统和一个公告板。我们希望让这个特效的表现对应于一个逻辑变量“强度”，它是一个浮点数，用fPower来表示。我们希望随着强度不同白烟粒子系统的发射速度会变化，黑烟粒子系统的大小和生命期会变化，公告板的大小和透明度会变化。面对这样的需求最直接能想到的解决方案就是提供一种可以遍历特效内部所有元素的方法，遍历过程中根据元素的不同类型反回不同的接口，然后调用这些接口修改不同元素的不同参数。遗憾的是这个方法很差劲，怎么想都不够好，举出两个最致命的缺点，一是要开放大量设置元素内部状态的接口函数，二是根据fPower设置特效元素参数的代码必须非常了解这个特效的内部结构，它要知道那个粒子系统是白烟，哪个是黑烟，哪个是公告板，哪些元素是不相干的。</summary><published>2008-10-30T07:26:00Z</published><updated>2008-10-30T07:26:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2008/10/30/1323058.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2008/10/30/1323058.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2008/09/04/1284270.html</id><title type="text">通过游戏逻辑对骨骼动画角色的局部骨骼进行控制，让游戏角色更加生动有趣！</title><summary type="text">     3D游戏中的骨骼动画一般都是由美术在3DMAX这样的软件中做好的，在游戏中直接播放，游戏逻辑除了播放速度外很难施加更多的控制。但是我们在一些游戏中看到人物的身体部位可以根据玩家的选择改变大小、粗细、长短，在一些游戏中NPC可以将头转向走过身边的玩家角色，目光始终注视着玩家，头也随着玩家角色的移动而转动。在《古墓丽影》中，劳拉拿着枪的手会自动指向目标，并跟随目标的移动而转动。这些功能的实现并不需要复杂的逆向动力学，只要通过游戏逻辑对角色局部骨骼的状态施加一些影响，进行一些修改就行了。</summary><published>2008-09-04T13:32:00Z</published><updated>2008-09-04T13:32:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2008/09/04/1284270.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2008/09/04/1284270.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2008/04/21/1164591.html</id><title type="text">在游戏中实现一个支持表情动画和转义字符的聊天文本框</title><summary type="text">    在游戏聊天文本框中支持类似QQ的表情动画以及各种转义符号已经成为网络游戏的必然选择，表情动画大家都很熟悉，转义符号是指在文本中嵌入一些特殊字符以表示文本属性或者一些特定的输出控制。其实表情动画也是通过转义符号表示的，只不过你不必直接输入这些转义字符，而是通过在表情列表框中选择表情，系统自动帮你输入这些符号。举例来说，用#R、#G、#B表示后面的文字分别以红、绿、蓝颜色显示，#b表示后面的文字闪烁，#n表示把后面的文字属性恢复到默认值，#加三个数字表示特定的表情符号，如#001表示一号表情，比如是一个笑脸。&#xD;</summary><published>2008-04-21T14:46:00Z</published><updated>2008-04-21T14:46:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2008/04/21/1164591.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2008/04/21/1164591.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2007/12/08/988125.html</id><title type="text">一种适合网游的界面系统设计方案</title><summary type="text">    说到界面系统，在windows平台上用c++编程的人多少都会知道MFC，我也曾仿照MFC的设计实现过一款单机游戏的界面系统。然而现在多数人认为MFC是一个设计不佳，复杂且难于使用的系统。使用MFC编程需要很长的学习过程，界面逻辑被分散到各个窗口类中，为了实现一个复杂界面，你不得不为界面中几乎每一个窗口创建派生类，并将界面逻辑嵌入到这些窗口类中。整个界面形成一个父窗口、子窗口、控件等对象组成的树状结构，许多消息在这个树状结构中通过广播的方式找到它的处理函数。要操纵子窗口或者控件完成一些事情不得不先找到包含它们的父窗口，再通过父窗口函数或者成员变量来访问子窗口或控件。这些特点迫使界面逻辑要了解界面的组织结构，甚至依赖于这个组织结构，难以实现逻辑和界面结构、布局的分离。&#xD;&#xD;    游戏界面有其自身的特点，比如游戏的界面往往比较简单，不需要太复杂的结构和布局，能够满足特定游戏的需求就行，不会象MFC那样被用来实现各种各样的应用程序，面对大量的不同需求，甚至要实现不可预期的需求，这就要求MFC这样的系统具有极大的灵活性，和可定制性。另外游戏界面系统往往用c++语言实现，而</summary><published>2007-12-08T15:41:00Z</published><updated>2007-12-08T15:41:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2007/12/08/988125.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2007/12/08/988125.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2007/11/26/972548.html</id><title type="text">一种3D引擎的多线程设计方案</title><summary type="text">    随着多核CPU的普及，多线程设计对3D引擎已经变得越来越重要，很难想象一两年后推出的3D引擎还在使用单线程方式。但是多线程的引入使引擎变得更加复杂，不良的设计带来的性能提升非常有限，甚至在单核环境下还会出现明显的性能下降。所以找到一种清晰、简洁、高效的设计方式就变得至关重要。目前多线程3D引擎设计的资料还很少，多数只讨论一些原则性的概念，缺少具体实例的分析。&#xD;&#xD;    本文提出一种具体的3D引擎多线程实现方案，这种方案只是初步实现，还缺乏大量的测试和长期运行的考验，但其中的思路也许可以给大家提供一些参考。目前流行的线程功能划分一般会把资源加载和图像渲染分别独立到一个线程中，这也是非常直观的划分方式，本文也不例外，也是采用这种线程功能的划分。&#xD;</summary><published>2007-11-26T03:41:00Z</published><updated>2007-11-26T03:41:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2007/11/26/972548.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2007/11/26/972548.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2007/09/14/893496.html</id><title type="text">场景管理，放弃场景图</title><summary type="text">    场景图一直被认为是适合游戏的通用场景管理算法，仿佛没实现过场景图就不算写过引擎。但是经过思&#xD;考和分析，我觉得场景图并不适合作为一种通用的场景组织方式，在下面我会说明理由，并提出一种替代的&#xD;适合目前mmorpg网游的场景管理方式。如果大家有什么不同看法可以和我讨论。&#xD;&#xD;</summary><published>2007-09-14T12:39:00Z</published><updated>2007-09-14T12:39:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2007/09/14/893496.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2007/09/14/893496.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2007/07/16/820102.html</id><title type="text">对上一篇的补充，在用alpha test方式绘制草地、树林时，一种避免排序又能达到理想效果的技巧</title><summary type="text">    在上一篇中提到了通过对大规模草地的快速排序实现理想草地绘制效果的方法，今天在浏览www.gamedev.net论坛的时候意外发现了一种方法，可以避免对草地、树林这样通过alpha test方式绘制的对象进行排序又能达到接近排序效果的小技巧。这种方法需要两个pass绘制，消耗一些额外的像素填充率，但效果非常不错。在你无法对大量植被进行快速排序或者象交叉面片这种无法排序的情况不妨考虑一下这种方法。现在你可以在排序、不排序的普通alpha test绘制和这种两pass alpha test绘制之间做出明智选择了。</summary><published>2007-07-16T08:57:00Z</published><updated>2007-07-16T08:57:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2007/07/16/820102.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2007/07/16/820102.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2007/06/22/793279.html</id><title type="text">大规模草地的快速绘制排序</title><summary type="text">    在现在的3D游戏室外场景中大片的茂密草丛为游戏增色不少，是玩家游戏体验真实感的重要组成部分。众所周知，对于象草这样的半透明物体在绘制时需要按到摄像机由远至近的顺序进行排序，否则会出现视觉错误。如果每一帧都对成千上万的草进行排序，CPU开销是极大的，甚至是不可接受的。</summary><published>2007-06-22T08:45:00Z</published><updated>2007-06-22T08:45:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2007/06/22/793279.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2007/06/22/793279.html"/></entry><entry><id>http://www.cnblogs.com/cproom/archive/2007/06/11/779329.html</id><title type="text">GeoMipMap地形万能索引生成器</title><summary type="text">此函数用于生成GeoMipMap地形算法的所引Buffer，可以生成一个由参数指定的特定Patch的所引数据，生成的几何体为三角形条带，生成三角形中有部分退化三角形，用于三角形条带的连接。生成的三角形是CCW或者CW一致的。&#xD;</summary><published>2007-06-11T07:39:00Z</published><updated>2007-06-11T07:39:00Z</updated><author><name>cproom</name><uri>http://www.cnblogs.com/cproom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cproom/archive/2007/06/11/779329.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cproom/archive/2007/06/11/779329.html"/></entry></feed>
