﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-zyb_debug</title><link>http://www.cppblog.com/zybdebug/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:37:19 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:37:19 GMT</pubDate><ttl>60</ttl><item><title>理解SkinWeights 骨骼动画</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/17/96584.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Thu, 17 Sep 2009 14:45:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/17/96584.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/96584.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/17/96584.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/96584.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/96584.html</trackback:ping><description><![CDATA[<a href="http://hi.baidu.com/zyb_debug/blog/item/fbe409eeb8a8b5e5cf1b3e0b.html">http://hi.baidu.com/zyb_debug/blog/item/fbe409eeb8a8b5e5cf1b3e0b.html</a>
<p><br>阅读 Advanced Animation</p>
<p>谈到SkinWeights里面的TransformMatrix的时候一笔带过，我始终不理解这个matrix有何用处，因为我感觉所有的顶点变换都被 Frame里面的阶层体系做了,那么SkinWeights里面的matrix有什么用。</p>
<p>经过我一个晚上的思考，看了GameDev论坛的帖子，终于理解了。</p>
<p>首先讲建模，建模建出来的是一些顶点，这些顶点组成了最原始的mesh。</p>
<p>最原始的mesh中有SkinWeights信息</p>
<p>SkinWeights</p>
<p>{</p>
<p>名字；</p>
<p>影响的顶点数；</p>
<p>顶点的索引；//就是影响了几个顶点</p>
<p>顶点权重；//乘以Frame TransformMatrix的百分比</p>
<p>最后就是一个4*4的矩阵；</p>
<p>}</p>
<p>这个4*4矩阵是这时骨骼在 Mesh中的位置的逆矩阵，也就是相对于 local坐标系。</p>
<p>我说的明白点，手腕是个骨骼，手指尖是手腕影响的顶点。就是一个点,vetex，在自身坐标系下。</p>
<p>那么用 手指尖这个点 * SkinWeightsMatrix 得到的就是个位置，什么位置？就相当于把手腕连带指尖移到坐标原点。当然，手腕在坐标原点的位置。</p>
<p>&#160;</p>
<p>至于Frame中存储的阶层体系矩阵就是现在骨骼的位置。</p>
<p>找到现在手腕骨骼的矩阵, 手指尖Vertex* SkinWeighsMatrix*(肩膀的Matrix*胳膊肘的matrix*手腕的matrix)，</p>
<p>那么手指尖自然就变换到了相应的位置。</p>
<p>&#160;</p>
<p>我说得这么通俗，不知道传达到思想没？</p>
<p>参考链接</p>
<p><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=479158"><font color=#810081><u>http://www.gamedev.net/community/forums/topic.asp?topic_id=479158</u></font></a></p>
<p><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=392242"><u><font color=#810081>http://www.gamedev.net/community/forums/topic.asp?topic_id=392242</font></u></a></p>
<p><u><font color=#810081></font></u></p>
<p>最后感慨下，GameDev的论坛果然是好地方</p>
<img src ="http://www.cppblog.com/zybdebug/aggbug/96584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-17 22:45 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/17/96584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在VS中如何部署.h和.cpp文件</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/15/96216.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Tue, 15 Sep 2009 06:59:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/15/96216.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/96216.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/15/96216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/96216.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/96216.html</trackback:ping><description><![CDATA[<p>以前写的绝大多数程序都是把cpp,h一股脑儿放在当前目录下。</p>
<p>这样明显是不好的，前几天我开始构建自己的点d3d库，构建了些许类之后发现把它们都放在当前目录，也就是工程目录下市不好的，应该把它们分类一下。</p>
<p>于是我试了下，新建一个文件夹，然后把。h丢进去。</p>
<p>结果发现在cpp文件里 #include &#8220;*****.h&#8221;不能编译通过。后来觉得VS里一定有设置寻找.h,路径的设置。</p>
<p>于是。</p>
<p>在property内看到了相应设置，如图</p>
<img height=238 alt="" src="http://www.cppblog.com/images/cppblog_com/zybdebug/2009-09-15_145157.jpg" width=186 border=0><br>
<p>看到 Additional那个选项没，在那里添加设置路径的地方，将.h.cpp所在的文件夹包含进去就行了。</p>
<p>如图</p>
<img height=414 alt="" src="http://www.cppblog.com/images/cppblog_com/zybdebug/2009-09-15_145310.jpg" width=525 border=0><br>后来遇到了个预编译头的问题，见上篇文章吧。
<img src ="http://www.cppblog.com/zybdebug/aggbug/96216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-15 14:59 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/15/96216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）预编译头文件</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/15/96214.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Tue, 15 Sep 2009 06:35:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/15/96214.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/96214.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/15/96214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/96214.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/96214.html</trackback:ping><description><![CDATA[<p>今天在改一个很大的程序，慢慢看，慢慢改。突然发现一个.c文件，里面什么也没有，</p>
<p>就几个头文件，我一看，我靠，这不是把简单的问题搞复杂了吗，随手删掉那个c文件。</p>
<p>结果不能编译了，我靠：</p>
<p>fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\':</p>
<p>No such file or directory</p>
<p>怎么rebuild all都不行。</p>
<p>上网查了一下，才搞懂了：</p>
<p>－－－－－－－－－－－－－－－－总结－－－－－－</p>
<p>如果工程很大，头文件很多，而有几个头文件又是经常要用的，那么</p>
<p>1。把这些头文件全部写到一个头文件里面去，比如写到preh.h</p>
<p>2。写一个preh.c，里面只一句话：#include "preh.h"</p>
<p>3。对于preh.c，在project setting里面设置creat precompiled headers，对于其他</p>
<p>.c文件，设置use precompiled header file</p>
<p>//</p>
<p>哈哈</p>
<p>我试了一下，效果很明显，不用precompiled header，编译一次我可以去上个厕所，用</p>
<p>precompiled header，编译的时候，我可以站起来伸个懒腰，活动活动就差不多啦</p>
<p>－－－－－－－－－转载的文章－－－－－－－－－－</p>
<p>预编译头的概念：</p>
<p>所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是</p>
<p>以.pch为扩展名的)，这个文件就称为预编译头文件这些预先编译好的代码可以是任何的</p>
<p>C/C++代码--------甚至是inline的函数，但是必须是稳定的，在工程开发的过程中不会</p>
<p>被经常改变。如果这些代码被修改，则需要重新编译生成预编译头文件。注意生成预编</p>
<p>译头文件是很耗时间的。同时你得注意预编译头文件通常很大，通常有6-7M大。注意及</p>
<p>时清理那些没有用的预编译头文件。</p>
<p>也许你会问：现在的编译器都有Time stamp的功能，编译器在编译整个工程的时候，它</p>
<p>只会编译那些经过修改的文件，而不会去编译那些从上次编译过，到现在没有被修改过</p>
<p>的文件。那么为什么还要预编译头文件呢？答案在这里，我们知道编译器是以文件为单</p>
<p>位编译的，一个文件经过修改后，会重新编译整个文件，当然在这个文件里包含的所有</p>
<p>头文件中的东西（.eg Macro, Preprocesser ）都要重新处理一遍。VC的预编译头文件</p>
<p>保存的正是这部分信息。以避免每次都要重新处理这些头文件。</p>
<p>预编译头的作用：</p>
<p>根据上文介绍，预编译头文件的作用当然就是提高便宜速度了，有了它你没有必要每次</p>
<p>都编译那些不需要经常改变的代码。编译性能当然就提高了。</p>
<p>预编译头的使用：</p>
<p>要使用预编译头，我们必须指定一个头文件，这个头文件包含我们不会经常改变的</p>
<p>代码和其他的头文件，然后我们用这个头文件来生成一个预编译头文件（.pch文件）</p>
<p>想必大家都知道 StdAfx.h这个文件。很多人都认为这是VC提供的一个&#8220;系统级别&#8221;的</p>
<p>，编译器带的一个头文件。其实不是的，这个文件可以是任何名字的。我们来考察一个</p>
<p>典型的由AppWizard生成的MFC Dialog Based　程序的预编译头文件。（因为AppWizard</p>
<p>会为我们指定好如何使用预编译头文件，默认的是StdAfx.h，这是VC起的名字）。我们</p>
<p>会发现这个头文件里包含了以下的头文件：</p>
<p>#include &lt;afxwin.h&gt; // MFC core and standard components</p>
<p>#include &lt;afxext.h&gt; // MFC extensions</p>
<p>#include &lt;afxdisp.h&gt; // MFC Automation classes</p>
<p>#include &lt;afxdtctl.h&gt; // MFC support for Internet Explorer 4</p>
<p>Common Controls</p>
<p>#include &lt;afxcmn.h&gt;</p>
<p>这些正是使用MFC的必须包含的头文件，当然我们不太可能在我们的工程中修改这些头文</p>
<p>件的，所以说他们是稳定的。</p>
<p>那么我们如何指定它来生成预编译头文件。我们知道一个头文件是不能编译的。所以我</p>
<p>们还需要一个cpp文件来生成.pch 文件。这个文件默认的就是StdAfx.cpp。在这个文件</p>
<p>里只有一句代码就是：#include &#8220;Stdafx.h&#8221;。原因是理所当然的，我们仅仅是要它能</p>
<p>够编译而已?D?D?D也就是说，要的只是它的.cpp的扩展名。我们可以用/Yc编译开关来指</p>
<p>定StdAfx.cpp来生成一个.pch文件，通过/Fp编译开关来指定生成的pch文件的名字。打</p>
<p>开project -&gt;Setting-&gt;C/C++ 对话框。把Category指向Precompiled Header。在左边的</p>
<p>树形视图里选择整个工程　</p>
<p>Project Options(右下角的那个白的地方)可以看到 /Fp &#8220;debug/PCH.pch&#8221;，这就是指</p>
<p>定生成的.pch文件的名字，默认的通常是　&lt;工程名&gt;.pch（我的示例工程名就是PCH）。</p>
<p>然后，在左边的树形视图里选择StdAfx.cpp.//这时只能选一个cpp文件！</p>
<p>这时原来的Project Option变成了 Source File Option（原来是工程，现在是一个文件</p>
<p>，当然变了）。在这里我们可以看到 /Yc开关，/Yc的作用就是指定这个文件来创建一个</p>
<p>Pch文件。/Yc后面的文件名是那个包含了稳定代码的头文件，一个工程里只能有一个文</p>
<p>件的可以有YC开关。VC就根据这个选项把 StdAfx.cpp编译成一个Obj文件和一个PCH文件</p>
<p>。</p>
<p>然后我们再选择一个其它的文件来看看，//其他cpp文件</p>
<p>在这里，Precomplier 选择了 Use ⋯⋯⋯一项，头文件是我们指定创建PCH 文件的stda</p>
<p>fx.h</p>
<p>文件。事实上，这里是使用工程里的设置，（如图1）/Yu&#8221;stdafx.h&#8221;。</p>
<p>这样，我们就设置好了预编译头文件。也就是说，我们可以使用预编译头功能了。以</p>
<p>下是注意事项：</p>
<p>1):如果使用了/Yu，就是说使用了预编译，我们在每个.cpp文件的最开头，我强调一遍</p>
<p>是最开头，包含 你指定产生pch文件的.h文件（默认是stdafx.h）不然就会有问题。如</p>
<p>果你没有包含这个文件，就告诉你Unexpected file end. 如果你不是在最开头包含的，</p>
<p>你自己试以下就知道了，绝对有很惊人的效果⋯..</p>
<p>fatal error C1010: unexpected end of file while looking for precompiled</p>
<p>header directive</p>
<p>Generating Code...</p>
<p>2）如果你把pch文件不小心丢了，编译的时候就会产生很多的不正常的行为。根据以上</p>
<p>的分析，你只要让编译器生成一个pch文件。也就是说把 stdafx.cpp（即指定/Yc的那个</p>
<p>cpp文件）从新编译一遍。当然你可以傻傻的 Rebuild All。简单一点就是选择那个cpp</p>
<p>文件，按一下Ctrl + F7就可以了。不然可是很浪费时间的哦。</p>
<p>//</p>
<p>呵呵，如果你居然耐着性子看到了这里，那么再回到帖子最开始看看我的总结吧！</p>
<img src ="http://www.cppblog.com/zybdebug/aggbug/96214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-15 14:35 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/15/96214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>完善Camera类</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/14/96159.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Mon, 14 Sep 2009 12:59:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/14/96159.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/96159.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/14/96159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/96159.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/96159.html</trackback:ping><description><![CDATA[//=========================================<br>&nbsp;&nbsp; /**<br>&nbsp;&nbsp; 次计算方法<br>&nbsp;&nbsp; right向量的y分量始终是0<br>&nbsp;&nbsp; */<br>//=========================================<br><br>在Camera类加了一个，以自身位置和目标位置计算look,up,right向量的函数<br>void zybCamera::setPositionAndTarget(D3DXVECTOR3* pos,D3DXVECTOR3* target)<br>{<br>&nbsp;&nbsp; _pos = *pos;<br>&nbsp;&nbsp; D3DXVECTOR3 look = *target - *pos;<br>&nbsp;&nbsp; D3DXVec3Normalize(&amp;look,&amp;look);<br>&nbsp;&nbsp; _look = look;
<p>&nbsp;&nbsp; _right.y = 0;<br>&nbsp;&nbsp;&nbsp;//正向旋转90&#176;，想想自己前方是前向量，又向量自然为前向量旋转90<br>&nbsp;&nbsp; _right.x = look.z;<br>&nbsp;&nbsp; _right.z = -look.x;<br>&nbsp;&nbsp; D3DXVec3Normalize(&amp;_right,&amp;_right);</p>
<p>&nbsp;&nbsp; D3DXVec3Cross(&amp;_up, &amp;_look, &amp;_right);<br>&nbsp;&nbsp; D3DXVec3Normalize(&amp;_up, &amp;_up);</p>
<p><br>}</p>
<img src ="http://www.cppblog.com/zybdebug/aggbug/96159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-14 20:59 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/14/96159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>扩充完路径库</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/14/96100.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Mon, 14 Sep 2009 03:56:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/14/96100.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/96100.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/14/96100.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/96100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/96100.html</trackback:ping><description><![CDATA[<p><a href="http://hi.baidu.com/zyb_debug/blog/item/87a5d6c3072f8c3fe4dd3b2a.html">http://hi.baidu.com/zyb_debug/blog/item/87a5d6c3072f8c3fe4dd3b2a.html</a><br>花了一个早上的时间，终于将路径库扩充完毕。</p>
<p>再次感叹一下Animation 那本书实在是太好了。</p>
<p>途中的茶壶会按照自己在外部文件中定义的路径走，有直线，有曲线。</p>
<p>外部txt是这样定义的</p>
<p>xof 0303txt 0032</p>
<p>template Path {<br>&lt;F8569BED-53B6-4923-AF0B-59A09271D556&gt;<br>DWORD Type;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 0=straight, 1=curved<br>Vector Start;<br>Vector Point1;<br>Vector Point2;<br>Vector End;<br>}</p>
<p>template Route {<br>&lt;18AA1C92-16AB-47a3-B002-6178F9D2D12F&gt;<br>DWORD NumPaths;<br>array Path Paths[NumPaths];<br>}</p>
<p>Route Robot {<br>5; // 5 paths</p>
<p>0; // Straight path type<br>0.0, 10.0,&nbsp;&nbsp; 0.0; // Start<br>0.0, 10.0,&nbsp;&nbsp; 0.0; // Unused<br>0.0, 10.0,&nbsp;&nbsp; 0.0; // Unused<br>0.0, 10.0, 150.0;, // End</p>
<p>1; // Curved path type<br>&nbsp;&nbsp;&nbsp; 0.0, 10.0, 150.0; // Start<br>&nbsp;&nbsp; 75.0, 10.0, 150.0; // Point1<br>150.0, 10.0, 75.0; // Point2<br>150.0, 10.0,&nbsp;&nbsp; 0.0;, // End</p>
<p>1; // Curved path type<br>150.0, 10.0,&nbsp;&nbsp;&nbsp; 0.0; // Start<br>150.0, 10.0, -75.0; // Point1<br>&nbsp;&nbsp; 75.0, 10.0, -150.0; // Point2<br>&nbsp;&nbsp;&nbsp; 0.0, 10.0, -150.0;, // End</p>
<p>0; // Straight path type<br>&nbsp;&nbsp;&nbsp;&nbsp; 0.0, 10.0, -150.0; // Start<br>&nbsp;&nbsp;&nbsp;&nbsp; 0.0, 10.0,&nbsp;&nbsp;&nbsp; 0.0; // Unused<br>&nbsp;&nbsp;&nbsp;&nbsp; 0.0, 10.0,&nbsp;&nbsp;&nbsp; 0.0; // Unused<br>-150.0, 10.0,&nbsp;&nbsp; 75.0;, // End</p>
<p>0; // Straight path type<br>-150.0, 10.0, 75.0; // Start<br>&nbsp;&nbsp;&nbsp;&nbsp; 0.0, 10.0,&nbsp;&nbsp; 0.0; // Unused<br>&nbsp;&nbsp;&nbsp;&nbsp; 0.0, 10.0,&nbsp;&nbsp; 0.0; // Unused<br>&nbsp;&nbsp;&nbsp;&nbsp; 0.0, 10.0,&nbsp;&nbsp; 0.0;; // End<br>}</p>
<p>然后用个类解析，根据时间插值就行了。<br><img height=632 alt="" src="http://www.cppblog.com/images/cppblog_com/zybdebug/2009-09-14_114932.jpg" width=806 border=0><br><img height=632 alt="" src="http://www.cppblog.com/images/cppblog_com/zybdebug/2009-09-14_114924.jpg" width=806 border=0></p>
<img src ="http://www.cppblog.com/zybdebug/aggbug/96100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-14 11:56 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/14/96100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadMesh and DrawMesh</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/12/96004.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Sat, 12 Sep 2009 08:04:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/12/96004.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/96004.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/12/96004.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/96004.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/96004.html</trackback:ping><description><![CDATA[<p><a href="http://hi.baidu.com/zyb_debug/blog/item/d2ee04171d48ab5bf2de32d7.html">http://hi.baidu.com/zyb_debug/blog/item/d2ee04171d48ab5bf2de32d7.html</a><br>利用上篇文章的D3DXMESHCONTAINER_EX，LoadMesh和DrawMesh都是简单的基础类函数，<br>以后就不用每次载入的时候都写那一大堆平凡的代码。<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">HRESULT&nbsp;LoadMesh(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMESHCONTAINER_EX&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">ppMesh,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDirect3DDevice9&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pDevice,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Filename,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">TexturePath&nbsp;</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;=&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;NewFVF&nbsp;</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;=&nbsp;0&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000">,&nbsp;DWORD&nbsp;LoadFlags&nbsp;</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;=&nbsp;D3DXMESH_SYSTEMMEM&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID3DXMesh&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pLoadMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HRESULT&nbsp;hr;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Error&nbsp;checking</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">ppMesh&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pDevice&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">Filename&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">TexturePath)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;E_FAIL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Use&nbsp;system&nbsp;memory&nbsp;if&nbsp;converting&nbsp;FVF</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;TempLoadFlags&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;LoadFlags;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(NewFVF)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempLoadFlags&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;D3DXMESH_SYSTEMMEM;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Load&nbsp;the&nbsp;mesh&nbsp;using&nbsp;D3DX&nbsp;routines</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID3DXBuffer&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">MaterialBuffer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">AdjacencyBuffer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;NumMaterials;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(FAILED(hr</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">D3DXLoadMeshFromXA(Filename,&nbsp;TempLoadFlags,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDevice,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">AdjacencyBuffer,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">MaterialBuffer,&nbsp;NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">NumMaterials,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pLoadMesh)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;hr;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Convert&nbsp;to&nbsp;new&nbsp;FVF&nbsp;first&nbsp;as&nbsp;needed</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(NewFVF)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID3DXMesh&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pTempMesh;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Use&nbsp;CloneMeshFVF&nbsp;to&nbsp;convert&nbsp;mesh</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(FAILED(hr</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">pLoadMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">CloneMeshFVF(LoadFlags,&nbsp;NewFVF,&nbsp;pDevice,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pTempMesh)))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(AdjacencyBuffer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(MaterialBuffer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(pLoadMesh);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;hr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Free&nbsp;prior&nbsp;mesh&nbsp;and&nbsp;store&nbsp;new&nbsp;pointer</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(pLoadMesh);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pLoadMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pTempMesh;&nbsp;pTempMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Allocate&nbsp;a&nbsp;D3DXMESHCONTAINER_EX&nbsp;structure</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMESHCONTAINER_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;D3DXMESHCONTAINER_EX();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ppMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pMesh;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Store&nbsp;mesh&nbsp;name&nbsp;(filename),&nbsp;type,&nbsp;and&nbsp;mesh&nbsp;pointer</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;_strdup(Filename);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MeshData.Type&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;D3DXMESHTYPE_MESH;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MeshData.pMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pLoadMesh;&nbsp;pLoadMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Store&nbsp;adjacency&nbsp;buffer</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;AdjSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;AdjacencyBuffer</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetBufferSize();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(AdjSize)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pAdjacency&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DWORD[AdjSize];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pAdjacency,&nbsp;AdjacencyBuffer</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetBufferPointer(),&nbsp;AdjSize);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(AdjacencyBuffer);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Build&nbsp;material&nbsp;list</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NumMaterials))&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Create&nbsp;a&nbsp;default&nbsp;material</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;D3DXMATERIAL[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pTextures&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;IDirect3DTexture9</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(D3DXMATERIAL));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Diffuse.r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Diffuse.g&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Diffuse.b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Diffuse.a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Ambient&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Diffuse;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Specular&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].MatD3D.Diffuse;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].pTextureFilename&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pTextures[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Load&nbsp;the&nbsp;materialsx</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMATERIAL&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Materials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXMATERIAL</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)MaterialBuffer</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetBufferPointer();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;D3DXMATERIAL[pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pTextures&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;IDirect3DTexture9</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">[pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials];<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(DWORD&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[i].MatD3D&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Materials[i].MatD3D;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[i].MatD3D.Ambient&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[i].MatD3D.Diffuse;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Load&nbsp;the&nbsp;texture&nbsp;if&nbsp;one&nbsp;exists</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pTextures[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(Materials[i].pTextureFilename)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;TextureFile[MAX_PATH];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf_s(TextureFile,MAX_PATH,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;TexturePath,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Materials[i].pTextureFilename);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXCreateTextureFromFileA(pDevice,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextureFile,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pTextures[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(MaterialBuffer);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Optimize&nbsp;the&nbsp;mesh&nbsp;for&nbsp;better&nbsp;attribute&nbsp;access</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MeshData.pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">OptimizeInplace(D3DXMESHOPT_ATTRSORT,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Clear&nbsp;pMesh&nbsp;pointer&nbsp;just&nbsp;in&nbsp;case</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;S_OK;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Draw&nbsp;the&nbsp;first&nbsp;mesh&nbsp;in&nbsp;a&nbsp;linked&nbsp;list&nbsp;of&nbsp;objects</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;HRESULT&nbsp;DrawMesh(D3DXMESHCONTAINER_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pMesh)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDirect3DDevice9&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pD3DDevice;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;LastState,&nbsp;OldAlphaState,&nbsp;OldSrcBlend,&nbsp;OldDestBlend;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Error&nbsp;checking</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pMesh)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;E_FAIL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MeshData.pMesh)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;E_FAIL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;E_FAIL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Get&nbsp;the&nbsp;device&nbsp;interface</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MeshData.pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetDevice(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pD3DDevice);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Release&nbsp;vertex&nbsp;shader&nbsp;if&nbsp;being&nbsp;used</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetVertexShader(NULL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetVertexDeclaration(NULL);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Save&nbsp;render&nbsp;states</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetRenderState(D3DRS_ALPHABLENDENABLE,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">OldAlphaState);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetRenderState(D3DRS_SRCBLEND,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">OldSrcBlend);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetRenderState(D3DRS_DESTBLEND,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">OldDestBlend);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LastState&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;OldAlphaState;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Setup&nbsp;pointer&nbsp;for&nbsp;mesh&nbsp;to&nbsp;draw,&nbsp;either&nbsp;regular&nbsp;or&nbsp;skinned</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID3DXMesh&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pDrawMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pSkinMesh)</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MeshData.pMesh:pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pSkinMesh;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Look&nbsp;through&nbsp;all&nbsp;subsets</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(DWORD&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">NumMaterials;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Set&nbsp;material&nbsp;and&nbsp;texture</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetMaterial(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[i].MatD3D);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetTexture(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pTextures[i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Enable&nbsp;or&nbsp;disable&nbsp;alpha&nbsp;blending&nbsp;per&nbsp;material</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">pMaterials[i].MatD3D.Diffuse.a&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(LastState&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;TRUE)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LastState&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TRUE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_ALPHABLENDENABLE,&nbsp;TRUE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_SRCBLEND,&nbsp;D3DBLEND_ONE);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">SRCCOLOR);</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_DESTBLEND,&nbsp;D3DBLEND_DESTCOLOR);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(LastState&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;FALSE)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LastState&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FALSE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_ALPHABLENDENABLE,&nbsp;FALSE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Draw&nbsp;the&nbsp;mesh&nbsp;subset</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDrawMesh</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">DrawSubset(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Restore&nbsp;alpha&nbsp;blending&nbsp;states</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(LastState&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;OldAlphaState)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_ALPHABLENDENABLE,&nbsp;OldAlphaState);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_SRCBLEND,&nbsp;OldSrcBlend);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetRenderState(D3DRS_DESTBLEND,&nbsp;OldDestBlend);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Make&nbsp;sure&nbsp;to&nbsp;release&nbsp;the&nbsp;device&nbsp;object!</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pD3DDevice</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Release();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Return&nbsp;success</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;S_OK;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.cppblog.com/zybdebug/aggbug/96004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-12 16:04 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/12/96004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>扩充D3DXMESHCONTAINER和D3DXFrame</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/11/95962.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Fri, 11 Sep 2009 13:51:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/11/95962.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/95962.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/11/95962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/95962.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/95962.html</trackback:ping><description><![CDATA[<a href="http://hi.baidu.com/zyb_debug/blog/item/cb3fe2ca9ca3f015bf09e682.html">http://hi.baidu.com/zyb_debug/blog/item/cb3fe2ca9ca3f015bf09e682.html</a>
<p>开始了Advanced Animation with DirectX的阅读<br>基础类库的构建是重要的,过后打算把它们加入我的zybToos的Framework里。<br>代码来自书中<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#ifndef&nbsp;ZYBANIMATIONTOOLS_H<br><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;ZYBANIMATIONTOOLS_H</span><span style="COLOR: #000000"><br><br>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DXUT.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">=========================================</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*<br>&nbsp;&nbsp;&nbsp;&nbsp;扩充D3DXMESHCONTAINER<br>&nbsp;&nbsp;&nbsp;&nbsp;扩充D3DXFrame<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">=========================================</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;zyb<br>{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;ReleaseCOM(x)&nbsp;{&nbsp;if(x!=NULL)&nbsp;x-&gt;Release();&nbsp;x=NULL;&nbsp;}</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Declare&nbsp;an&nbsp;extended&nbsp;version&nbsp;of&nbsp;D3DXFRAME<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;that&nbsp;contains&nbsp;a&nbsp;constructor&nbsp;and&nbsp;destructor<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;as&nbsp;well&nbsp;as&nbsp;a&nbsp;combined&nbsp;transformation&nbsp;matrix</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;D3DXFRAME_EX&nbsp;:&nbsp;D3DXFRAME&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMATRIX&nbsp;matCombined;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Combined&nbsp;matrix</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMATRIX&nbsp;matOriginal;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Original&nbsp;transformation&nbsp;from&nbsp;.X</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXFRAME_EX()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMeshContainer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrameSibling&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pFrameFirstChild&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMatrixIdentity(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matCombined);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMatrixIdentity(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matOriginal);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMatrixIdentity(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">TransformationMatrix);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">D3DXFRAME_EX()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;Name;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pFrameSibling;&nbsp;&nbsp;&nbsp;&nbsp;pFrameSibling&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pFrameFirstChild;&nbsp;pFrameFirstChild&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Function&nbsp;to&nbsp;scan&nbsp;hierarchy&nbsp;for&nbsp;matching&nbsp;frame&nbsp;name</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXFRAME_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Find(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">FrameName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXFRAME_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFrame,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFramePtr;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Return&nbsp;this&nbsp;frame&nbsp;instance&nbsp;if&nbsp;name&nbsp;matched</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(Name&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;FrameName&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(FrameName,&nbsp;Name))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Scan&nbsp;siblings</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFramePtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameSibling))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFrame&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pFramePtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Find(FrameName)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pFrame;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Scan&nbsp;children</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFramePtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameFirstChild))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFrame&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pFramePtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Find(FrameName)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pFrame;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Return&nbsp;none&nbsp;found</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Reset&nbsp;transformation&nbsp;matrices&nbsp;to&nbsp;originals</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Reset()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Copy&nbsp;original&nbsp;matrix</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TransformationMatrix&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;matOriginal;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Reset&nbsp;sibling&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXFRAME_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFramePtr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFramePtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameSibling))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFramePtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Reset();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Reset&nbsp;child&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFramePtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameFirstChild))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFramePtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Reset();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Function&nbsp;to&nbsp;combine&nbsp;matrices&nbsp;in&nbsp;frame&nbsp;hiearchy</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;UpdateHierarchy(D3DXMATRIX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">matTransformation&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXFRAME_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFramePtr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMATRIX&nbsp;matIdentity;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Use&nbsp;an&nbsp;identity&nbsp;matrix&nbsp;if&nbsp;none&nbsp;passed</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">matTransformation)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMatrixIdentity(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matIdentity);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matTransformation&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matIdentity;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Combine&nbsp;matrices&nbsp;w/supplied&nbsp;transformation&nbsp;matrix</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matCombined&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TransformationMatrix&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">matTransformation);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Combine&nbsp;w/sibling&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFramePtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameSibling))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFramePtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">UpdateHierarchy(matTransformation);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Combine&nbsp;w/child&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFramePtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameFirstChild))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFramePtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">UpdateHierarchy(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matCombined);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Count(DWORD&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Num)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Error&nbsp;checking</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">Num)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Increase&nbsp;count&nbsp;of&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Num)</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Process&nbsp;sibling&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXFRAME_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFrame;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFrame</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameSibling))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrame</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Count(Num);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Process&nbsp;child&nbsp;frames</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pFrame</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(D3DXFRAME_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pFrameFirstChild))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrame</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Count(Num);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Declare&nbsp;an&nbsp;extended&nbsp;version&nbsp;of&nbsp;D3DXMESHCONTAINER<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;that&nbsp;contains&nbsp;a&nbsp;constructor&nbsp;and&nbsp;destructor<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;as&nbsp;well&nbsp;as&nbsp;an&nbsp;array&nbsp;of&nbsp;textures,&nbsp;a&nbsp;mesh&nbsp;object<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;that&nbsp;contains&nbsp;the&nbsp;generated&nbsp;skin&nbsp;mesh,&nbsp;and&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;matrices&nbsp;that&nbsp;map&nbsp;to&nbsp;the&nbsp;frame&nbsp;hierarchy's&nbsp;and<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;for&nbsp;updating&nbsp;bones.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;D3DXMESHCONTAINER_EX&nbsp;:&nbsp;D3DXMESHCONTAINER<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDirect3DTexture9&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">pTextures;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID3DXMesh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pSkinMesh;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMATRIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">ppFrameMatrices;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMATRIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pBoneMatrices;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMESHCONTAINER_EX()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MeshData.pMesh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMaterials&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pEffects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumMaterials&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pAdjacency&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSkinInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNextMeshContainer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTextures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSkinMesh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ppFrameMatrices&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBoneMatrices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">D3DXMESHCONTAINER_EX()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pTextures&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;NumMaterials)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(DWORD&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">NumMaterials;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(pTextures[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;pTextures;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTextures&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumMaterials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;Name;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;pMaterials;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMaterials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pEffects;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pEffects&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;pAdjacency;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pAdjacency&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;ppFrameMatrices;&nbsp;ppFrameMatrices&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;pBoneMatrices;&nbsp;&nbsp;&nbsp;pBoneMatrices&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(MeshData.pMesh);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(pSkinInfo);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCOM(pSkinMesh);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pNextMeshContainer;&nbsp;pNextMeshContainer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMESHCONTAINER_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Find(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">MeshName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DXMESHCONTAINER_EX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pMesh,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pMeshPtr;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Return&nbsp;this&nbsp;mesh&nbsp;instance&nbsp;if&nbsp;name&nbsp;matched</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(Name&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;MeshName&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(MeshName,&nbsp;Name))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Scan&nbsp;next&nbsp;in&nbsp;list</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pMeshPtr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(D3DXMESHCONTAINER_EX</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pNextMeshContainer))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pMesh&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pMeshPtr</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Find(MeshName)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pMesh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Return&nbsp;none&nbsp;found</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br><br><br><br><br><br><br>}<br><br><br></span><span style="COLOR: #0000ff">#endif</span></div>
<img src ="http://www.cppblog.com/zybdebug/aggbug/95962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-11 21:51 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/11/95962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>上自习</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/10/95857.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Thu, 10 Sep 2009 14:15:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/10/95857.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/95857.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/10/95857.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/95857.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/95857.html</trackback:ping><description><![CDATA[<p><a href="http://hi.baidu.com/zyb_debug/blog/item/e7072b10295eb074cb80c42a.html">http://hi.baidu.com/zyb_debug/blog/item/e7072b10295eb074cb80c42a.html</a><br>ogre的强大让我忍不住想用它。</p>
<p>这几天快要看完那本书了，还剩动态阴影和2D。明天应该就可以完结了。</p>
<p>编程之美看了绪论前面引言，我发现2年来我忽视了一个重要的东西就是算法。幸好我在大三这一年刚开始发现了。</p>
<p>DirectX中基础还有Animation不太懂，不过我已经打印了Advanced Animation with DirectX9。</p>
<p>听着MP3中《音乐天堂》精选，学习完后走在大学的路上。</p>
<p>感觉离神是如此的进....</p>
<img src ="http://www.cppblog.com/zybdebug/aggbug/95857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-10 22:15 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/10/95857.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实作ADTvector2 vector3 vector4 matrix44 matrix33</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/08/95543.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Tue, 08 Sep 2009 02:46:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/08/95543.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/95543.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/08/95543.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/95543.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/95543.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://hi.baidu.com/zyb_debug/blog/item/b837e41ffd64f7fd1ad5761b.html以前一直有个想法就是写标题上的ADT，但一直担心自己写的效率不高。最近看了一段源码，终于圆了我的梦想。话不多说，国外高手写的matrix，想法果然不一样，直接看代码吧。来自 《游戏编程精粹1》mtxlib.h/*&nbsp;Copyright...&nbsp;&nbsp;<a href='http://www.cppblog.com/zybdebug/archive/2009/09/08/95543.html'>阅读全文</a><img src ="http://www.cppblog.com/zybdebug/aggbug/95543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-08 10:46 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/08/95543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于while(cin)</title><link>http://www.cppblog.com/zybdebug/archive/2009/09/06/95409.html</link><dc:creator>zyb_debug</dc:creator><author>zyb_debug</author><pubDate>Sun, 06 Sep 2009 06:38:00 GMT</pubDate><guid>http://www.cppblog.com/zybdebug/archive/2009/09/06/95409.html</guid><wfw:comment>http://www.cppblog.com/zybdebug/comments/95409.html</wfw:comment><comments>http://www.cppblog.com/zybdebug/archive/2009/09/06/95409.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/zybdebug/comments/commentRss/95409.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zybdebug/services/trackbacks/95409.html</trackback:ping><description><![CDATA[<p><a href="http://hi.baidu.com/zyb_debug/blog/item/cdfc2adf9b982451cdbf1a7e.html">http://hi.baidu.com/zyb_debug/blog/item/cdfc2adf9b982451cdbf1a7e.html</a><br>streams定义了两个可用于布尔表达式的函数</p>
<p>operator void*()&nbsp;&nbsp; 意义：stream是否出错（相当于!fail()）<br>operator !()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 意义：stream是否已出错（相当于fail()）</p>
<p>我们可以运用operator void*()在控制结构中简洁测出stream的当前状态:</p>
<p>while (std::cin)<br>{<br>}<br>控制结构中的布尔条件值并不是非得直接转换为bool不可，只要能够转换为某个整数型别或指针型别就够了。<br>转换为void* 常常是为了在同一表达式中读入对象并测试是否成功：</p>
<p>if(std::cin&gt;&gt; x)<br>{<br>//reading x was successful<br>}<br>正如先前的讨论，表达式<br>std::cin &gt;&gt; x<br>会返回cin，所以读入x后，上述语句变为<br>if(std::cin)<br>{<br>}</p>
<p>此时的cin被用于条件判断,所以cin会调用 operator void*,返回"stream是否发生错误"</p>
<p>以上技术的几个典型应用就是以循环读入对象并处理<br>while(std::cin &gt;&gt; obj)<br>{<br>std:: cout &lt;&lt; obj &lt;&lt; std::endl;<br>}</p>
<p>如果failbit或badbit被设立，该循环就立即中止---出现错误或者读到(end-of-file).</p>
<p>我们可以利用operator!进行相反测试，它会返回"strean是否已发生错误"，也就是说如果failbit 或badbit被设立就会返回true用法如下:<br>if(!std::cin)<br>{<br>//the stream is not OK<br>}</p>
<p>上述文字出于 &lt;&lt;c++标准程序库-自修教程与参考手册-&gt;&gt;p600 侯捷-孟岩译</p>
<p>花了几天时间终于将这本书阅读完了，里面的streambuf没有理解，是我功底不够的缘故吧...<br>开学了，人多了起来，继续静静的学习</p>
<img src ="http://www.cppblog.com/zybdebug/aggbug/95409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zybdebug/" target="_blank">zyb_debug</a> 2009-09-06 14:38 <a href="http://www.cppblog.com/zybdebug/archive/2009/09/06/95409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>