﻿<?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++博客-溪风蝉月</title><link>http://www.cppblog.com/xifeng/</link><description>heading to free</description><language>zh-cn</language><lastBuildDate>Sun, 05 Apr 2026 18:40:46 GMT</lastBuildDate><pubDate>Sun, 05 Apr 2026 18:40:46 GMT</pubDate><ttl>60</ttl><item><title>一步一步从DX中导入并使用.X File</title><link>http://www.cppblog.com/xifeng/archive/2012/02/09/165238.html</link><dc:creator>溪风蝉月</dc:creator><author>溪风蝉月</author><pubDate>Thu, 09 Feb 2012 12:37:00 GMT</pubDate><guid>http://www.cppblog.com/xifeng/archive/2012/02/09/165238.html</guid><wfw:comment>http://www.cppblog.com/xifeng/comments/165238.html</wfw:comment><comments>http://www.cppblog.com/xifeng/archive/2012/02/09/165238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xifeng/comments/commentRss/165238.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xifeng/services/trackbacks/165238.html</trackback:ping><description><![CDATA[<p>&nbsp; 我们看到3d世界的奇妙，丰富的场景，真实的物体… … 在DX中是如何实现这样丰富的场景的，一种方法是用DX绘制（用顶点缓存一个一个绘制，如DrawTrangle，DrawTube等），但这样会很麻烦，你要考虑无限物体的参数，考虑它们的位置等；另外一种方法就是在3d制作软件（如3dmax或者maya）中随心所欲地创作好你的3d世界，然后导出为DX可识别的格式（如3dmax导出为XFile），进而在DX中加载进去即可。下面就是整个从3dmax中建好模到用DX显示出来的过程。</p> <p>&nbsp;</p> <p><font size="3"><strong>1. 安装插件（PandaDirectXMaxExporter_x86.dle）——</strong></font><a href="http://www.cppblog.com/lai3d/archive/2008/08/21/59562.aspx" target="_blank"><font size="3"><strong>安装方法</strong></font></a><font size="3"><strong>。</strong></font></p> <p><font size="3"><strong>2. 在3dmax中建模。</strong></font></p> <p><font size="3"><strong>3. 把模型导出为.x 文件。</strong></font></p> <p>&nbsp;&nbsp;&nbsp; 导出时3dmax参数设置：</p> <p>&nbsp;&nbsp;&nbsp; <img alt="3DS Max Object选项卡" src="http://shiba.hpe.sh.cn/jiaoyanzu/wuli/soft/MySoft/panda-plugin-tab1.png"></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; <img alt="Mesh选项卡" src="http://shiba.hpe.sh.cn/jiaoyanzu/wuli/soft/MySoft/panda-plugin-tab2.png"></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; <img alt="Animation选项卡" src="http://shiba.hpe.sh.cn/jiaoyanzu/wuli/soft/MySoft/panda-plugin-tab3.png"></p> <p>&nbsp;&nbsp;&nbsp; </p> <p>&nbsp;&nbsp;&nbsp; <img alt="Textures&amp;.fx files选项卡" src="http://shiba.hpe.sh.cn/jiaoyanzu/wuli/soft/MySoft/panda-plugin-tab4.png"></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; <img alt="X File Setting选项卡" src="http://shiba.hpe.sh.cn/jiaoyanzu/wuli/soft/MySoft/panda-plugin-tab5.png"></p> <p>&nbsp;</p> <p><font size="3"><strong>4. 在DX中实现.X文件的导入并显示出来。</strong></font></p> <p><strong><font size="3"></font></strong>&nbsp;&nbsp;&nbsp; </p> <div class="csharpcode"><pre><span class="lnum">   1:  </span>#include &lt;windows.h&gt; </pre><pre><span class="lnum">   2:  </span>#include &lt;d3dx9.h&gt; </pre><pre><span class="lnum">   3:  </span>#include &lt;vector&gt; </pre><pre><span class="lnum">   4:  </span><span class="kwrd">using</span> <span class="kwrd">namespace</span> std;   </pre><pre><span class="lnum">   5:  </span>HINSTANCE hInstance;   </pre><pre><span class="lnum">   6:  </span>IDirect3DDevice9 *Device = 0;   </pre><pre><span class="lnum">   7:  </span><span class="kwrd">const</span> D3DXCOLOR      WHITE( D3DCOLOR_XRGB(255, 255, 255) );   </pre><pre><span class="lnum">   8:  </span><span class="rem">//设置全局变量，一个ID3DXMesh对象存储从XFile中加载的网格数据，另外两个变量分别存储该网格的材质和纹理数据 </span></pre><pre><span class="lnum">   9:  </span>ID3DXMesh *Mesh = 0;   </pre><pre><span class="lnum">  10:  </span>vector&lt;D3DMATERIAL9&gt;Mtrls(0);   </pre><pre><span class="lnum">  11:  </span>vector&lt;IDirect3DTexture9*&gt;Textures(0);   </pre><pre><span class="lnum">  12:  </span><span class="kwrd">bool</span> Setup()   </pre><pre><span class="lnum">  13:  </span>{   </pre><pre><span class="lnum">  14:  </span><span class="rem">//导入XFile数据 </span></pre><pre><span class="lnum">  15:  </span>    ID3DXBuffer* adjBuffer = 0;   </pre><pre><span class="lnum">  16:  </span>    ID3DXBuffer* mtrlBuffer = 0;   </pre><pre><span class="lnum">  17:  </span>DWORD numMtrls = 0;   </pre><pre><span class="lnum">  18:  </span>    D3DXLoadMeshFromX(<span class="str">"bigship1.x"</span>, D3DXMESH_MANAGED, Device, &amp;adjBuffer, &amp;mtrlBuffer, 0, &amp;numMtrls, &amp;Mesh);   </pre><pre><span class="lnum">  19:  </span><span class="rem">//加载XFile文件后，我们必须遍历D3DXMATRIAL数组中的元素，并加载该网格所引用的纹理数据 </span></pre><pre><span class="lnum">  20:  </span><span class="kwrd">if</span>(mtrlBuffer!=0 &amp;&amp; numMtrls!=0)   </pre><pre><span class="lnum">  21:  </span>    {   </pre><pre><span class="lnum">  22:  </span>        D3DXMATERIAL *mtrls = (D3DXMATERIAL*)mtrlBuffer-&gt;GetBufferPointer();   </pre><pre><span class="lnum">  23:  </span><span class="kwrd">for</span>(<span class="kwrd">int</span> i=0; i&lt;numMtrls; i++)   </pre><pre><span class="lnum">  24:  </span>        {   </pre><pre><span class="lnum">  25:  </span><span class="rem">//设置MatD3D的属性 </span></pre><pre><span class="lnum">  26:  </span>            mtrls[i].MatD3D.Ambient = mtrls[i].MatD3D.Diffuse;   </pre><pre><span class="lnum">  27:  </span><span class="rem">//保存第i个材质 </span></pre><pre><span class="lnum">  28:  </span>            Mtrls.push_back(mtrls[i].MatD3D);   </pre><pre><span class="lnum">  29:  </span><span class="rem">//检查第i个材质是否有纹理 </span></pre><pre><span class="lnum">  30:  </span><span class="kwrd">if</span>(mtrls[i].pTextureFilename != 0)   </pre><pre><span class="lnum">  31:  </span>            {   </pre><pre><span class="lnum">  32:  </span><span class="rem">//是的话导入纹理信息 </span></pre><pre><span class="lnum">  33:  </span>                IDirect3DTexture9* tex = 0;   </pre><pre><span class="lnum">  34:  </span>                D3DXCreateTextureFromFile(Device, mtrls[i].pTextureFilename, &amp;tex);   </pre><pre><span class="lnum">  35:  </span><span class="rem">//保存导入的纹理 </span></pre><pre><span class="lnum">  36:  </span>                Textures.push_back(tex);   </pre><pre><span class="lnum">  37:  </span>            }   </pre><pre><span class="lnum">  38:  </span><span class="kwrd">else</span> </pre><pre><span class="lnum">  39:  </span>            {   </pre><pre><span class="lnum">  40:  </span><span class="rem">//不是的话 </span></pre><pre><span class="lnum">  41:  </span>                Textures.push_back(0);   </pre><pre><span class="lnum">  42:  </span>            }   </pre><pre><span class="lnum">  43:  </span>        }   </pre><pre><span class="lnum">  44:  </span>    }   </pre><pre><span class="lnum">  45:  </span>    Mesh-&gt;OptimizeInplace(          </pre><pre><span class="lnum">  46:  </span>        D3DXMESHOPT_ATTRSORT |   </pre><pre><span class="lnum">  47:  </span>        D3DXMESHOPT_COMPACT  |   </pre><pre><span class="lnum">  48:  </span>        D3DXMESHOPT_VERTEXCACHE,   </pre><pre><span class="lnum">  49:  </span>        (DWORD*)adjBuffer-&gt;GetBufferPointer(),   </pre><pre><span class="lnum">  50:  </span>        0, 0, 0);   </pre><pre><span class="lnum">  51:  </span><span class="rem">// </span></pre><pre><span class="lnum">  52:  </span><span class="rem">// Set texture filters. </span></pre><pre><span class="lnum">  53:  </span><span class="rem">// </span></pre><pre><span class="lnum">  54:  </span>    Device-&gt;SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);   </pre><pre><span class="lnum">  55:  </span>    Device-&gt;SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);   </pre><pre><span class="lnum">  56:  </span>    Device-&gt;SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);   </pre><pre><span class="lnum">  57:  </span><span class="rem">//  </span></pre><pre><span class="lnum">  58:  </span><span class="rem">// Set Lights. </span></pre><pre><span class="lnum">  59:  </span><span class="rem">// </span></pre><pre><span class="lnum">  60:  </span>    D3DLIGHT9 dir;   </pre><pre><span class="lnum">  61:  </span>    ZeroMemory(&amp;dir, <span class="kwrd">sizeof</span>(dir));   </pre><pre><span class="lnum">  62:  </span>    dir.Type      = D3DLIGHT_DIRECTIONAL;   </pre><pre><span class="lnum">  63:  </span>    dir.Diffuse   = WHITE;   </pre><pre><span class="lnum">  64:  </span>    dir.Specular  = WHITE * 0.3f;   </pre><pre><span class="lnum">  65:  </span>    dir.Ambient   = WHITE * 0.6f;   </pre><pre><span class="lnum">  66:  </span>    dir.Direction = D3DXVECTOR3(1.0f, 0.0f, 0.0f);   </pre><pre><span class="lnum">  67:  </span><span class="rem">// </span></pre><pre><span class="lnum">  68:  </span><span class="rem">// Set and Enable the light. </span></pre><pre><span class="lnum">  69:  </span><span class="rem">// </span></pre><pre><span class="lnum">  70:  </span>    Device-&gt;SetLight(0, &amp;dir);   </pre><pre><span class="lnum">  71:  </span>    Device-&gt;LightEnable(0, <span class="kwrd">true</span>);   </pre><pre><span class="lnum">  72:  </span><span class="rem">// </span></pre><pre><span class="lnum">  73:  </span><span class="rem">// Set camera. </span></pre><pre><span class="lnum">  74:  </span><span class="rem">// </span></pre><pre><span class="lnum">  75:  </span>    D3DXVECTOR3 pos(4.0f, 4.0f, -13.0f);   </pre><pre><span class="lnum">  76:  </span>    D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);   </pre><pre><span class="lnum">  77:  </span>    D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);   </pre><pre><span class="lnum">  78:  </span>    D3DXMATRIX V;   </pre><pre><span class="lnum">  79:  </span>    D3DXMatrixLookAtLH(   </pre><pre><span class="lnum">  80:  </span>        &amp;V,   </pre><pre><span class="lnum">  81:  </span>        &amp;pos,   </pre><pre><span class="lnum">  82:  </span>        &amp;target,   </pre><pre><span class="lnum">  83:  </span>        &amp;up);   </pre><pre><span class="lnum">  84:  </span>    Device-&gt;SetTransform(D3DTS_VIEW, &amp;V);   </pre><pre><span class="lnum">  85:  </span><span class="rem">// </span></pre><pre><span class="lnum">  86:  </span><span class="rem">// Set projection matrix. </span></pre><pre><span class="lnum">  87:  </span><span class="rem">// </span></pre><pre><span class="lnum">  88:  </span>    D3DXMATRIX proj;   </pre><pre><span class="lnum">  89:  </span>    D3DXMatrixPerspectiveFovLH(   </pre><pre><span class="lnum">  90:  </span>            &amp;proj,   </pre><pre><span class="lnum">  91:  </span>            D3DX_PI * 0.5f, <span class="rem">// 90 - degree </span></pre><pre><span class="lnum">  92:  </span>            800.0f/600.0f,   </pre><pre><span class="lnum">  93:  </span>            1.0f,   </pre><pre><span class="lnum">  94:  </span>            1000.0f);   </pre><pre><span class="lnum">  95:  </span>    Device-&gt;SetTransform(D3DTS_PROJECTION, &amp;proj);   </pre><pre><span class="lnum">  96:  </span><span class="kwrd">return</span> <span class="kwrd">true</span>;   </pre><pre><span class="lnum">  97:  </span>}   </pre><pre><span class="lnum">  98:  </span><span class="kwrd">void</span> Cleanup()   </pre><pre><span class="lnum">  99:  </span>{   </pre><pre><span class="lnum"> 100:  </span>}   </pre><pre><span class="lnum"> 101:  </span><span class="kwrd">void</span> Display(<span class="kwrd">float</span> time)   </pre><pre><span class="lnum"> 102:  </span>{   </pre><pre><span class="lnum"> 103:  </span><span class="kwrd">if</span>(Device)   </pre><pre><span class="lnum"> 104:  </span>    {   </pre><pre><span class="lnum"> 105:  </span><span class="kwrd">static</span> <span class="kwrd">float</span> y = 0.0f;   </pre><pre><span class="lnum"> 106:  </span>        D3DXMATRIX yRot;   </pre><pre><span class="lnum"> 107:  </span>        D3DXMatrixRotationY(&amp;yRot, y);   </pre><pre><span class="lnum"> 108:  </span>        y = y + time;   </pre><pre><span class="lnum"> 109:  </span><span class="kwrd">if</span>(y&gt;6.28f)   </pre><pre><span class="lnum"> 110:  </span>            y = 0.0f;   </pre><pre><span class="lnum"> 111:  </span>        D3DXMATRIX World = yRot;   </pre><pre><span class="lnum"> 112:  </span>        Device -&gt;SetTransform(D3DTS_WORLD, &amp;World);   </pre><pre><span class="lnum"> 113:  </span>        Device -&gt;Clear(0, 0, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0x0000ffff, 1.0f, 0);   </pre><pre><span class="lnum"> 114:  </span>        Device -&gt;BeginScene();   </pre><pre><span class="lnum"> 115:  </span><span class="kwrd">for</span>(<span class="kwrd">int</span> i=0; i&lt;Mtrls.size(); i++)   </pre><pre><span class="lnum"> 116:  </span>        {   </pre><pre><span class="lnum"> 117:  </span>            Device -&gt;SetMaterial(&amp;Mtrls[i]);   </pre><pre><span class="lnum"> 118:  </span>            Device -&gt;SetTexture(0, Textures[i]);   </pre><pre><span class="lnum"> 119:  </span>            Mesh -&gt;DrawSubset(i);   </pre><pre><span class="lnum"> 120:  </span>        }   </pre><pre><span class="lnum"> 121:  </span>        Device -&gt;EndScene();   </pre><pre><span class="lnum"> 122:  </span>        Device -&gt;Present(0, 0, 0, 0);   </pre><pre><span class="lnum"> 123:  </span>    }   </pre><pre><span class="lnum"> 124:  </span>}   </pre><pre><span class="lnum"> 125:  </span>LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)   </pre><pre><span class="lnum"> 126:  </span>{   </pre><pre><span class="lnum"> 127:  </span><span class="kwrd">switch</span>(uMsg)   </pre><pre><span class="lnum"> 128:  </span>    {   </pre><pre><span class="lnum"> 129:  </span><span class="kwrd">case</span> WM_DESTROY:   </pre><pre><span class="lnum"> 130:  </span>        PostQuitMessage(0);   </pre><pre><span class="lnum"> 131:  </span><span class="kwrd">break</span>;   </pre><pre><span class="lnum"> 132:  </span><span class="kwrd">case</span> WM_KEYDOWN:   </pre><pre><span class="lnum"> 133:  </span><span class="kwrd">if</span>( wParam == VK_ESCAPE )   </pre><pre><span class="lnum"> 134:  </span>            DestroyWindow(hWnd);   </pre><pre><span class="lnum"> 135:  </span><span class="kwrd">break</span>;   </pre><pre><span class="lnum"> 136:  </span><span class="kwrd">default</span>:   </pre><pre><span class="lnum"> 137:  </span><span class="kwrd">return</span> DefWindowProc(hWnd, uMsg, wParam, lParam);   </pre><pre><span class="lnum"> 138:  </span>    }   </pre><pre><span class="lnum"> 139:  </span><span class="kwrd">return</span> 0;   </pre><pre><span class="lnum"> 140:  </span>}   </pre><pre><span class="lnum"> 141:  </span><span class="kwrd">int</span> WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, <span class="kwrd">int</span> nShowCmd)   </pre><pre><span class="lnum"> 142:  </span>{   </pre><pre><span class="lnum"> 143:  </span>    MSG msg;   </pre><pre><span class="lnum"> 144:  </span>    ZeroMemory(&amp;msg, <span class="kwrd">sizeof</span>(msg));   </pre><pre><span class="lnum"> 145:  </span>    WNDCLASSEX wc;   </pre><pre><span class="lnum"> 146:  </span>    wc.cbClsExtra = NULL;   </pre><pre><span class="lnum"> 147:  </span>    wc.cbSize = <span class="kwrd">sizeof</span>(wc);   </pre><pre><span class="lnum"> 148:  </span>    wc.cbWndExtra = NULL;   </pre><pre><span class="lnum"> 149:  </span>    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   </pre><pre><span class="lnum"> 150:  </span>    wc.hCursor = LoadCursor(NULL, IDC_ARROW);   </pre><pre><span class="lnum"> 151:  </span>    wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);   </pre><pre><span class="lnum"> 152:  </span>    wc.hIconSm = NULL;   </pre><pre><span class="lnum"> 153:  </span>    wc.hInstance = hInstance;   </pre><pre><span class="lnum"> 154:  </span>    wc.lpfnWndProc = WndProc;   </pre><pre><span class="lnum"> 155:  </span>    wc.lpszClassName = <span class="str">"draw"</span>;   </pre><pre><span class="lnum"> 156:  </span>    wc.lpszMenuName = NULL;   </pre><pre><span class="lnum"> 157:  </span>    wc.style = CS_DROPSHADOW;   </pre><pre><span class="lnum"> 158:  </span>    RegisterClassEx(&amp;wc);   </pre><pre><span class="lnum"> 159:  </span>HWND hWnd = CreateWindowEx(WS_EX_COMPOSITED, <span class="str">"draw"</span>, <span class="str">"draw"</span>, WS_HSCROLL, 100, 100, 800, 600, NULL, NULL, hInstance, NULL);   </pre><pre><span class="lnum"> 160:  </span>    ShowWindow(hWnd, SW_NORMAL);   </pre><pre><span class="lnum"> 161:  </span>    UpdateWindow(hWnd);   </pre><pre><span class="lnum"> 162:  </span>    IDirect3D9 *D3D9 = 0;   </pre><pre><span class="lnum"> 163:  </span>    D3D9 = Direct3DCreate9(D3D_SDK_VERSION);   </pre><pre><span class="lnum"> 164:  </span>    D3DCAPS9 caps;   </pre><pre><span class="lnum"> 165:  </span>    D3D9 -&gt;GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &amp;caps);   </pre><pre><span class="lnum"> 166:  </span><span class="kwrd">int</span> vp = 0;   </pre><pre><span class="lnum"> 167:  </span><span class="kwrd">if</span>(caps.DevCaps &amp; D3DDEVCAPS_HWTRANSFORMANDLIGHT)   </pre><pre><span class="lnum"> 168:  </span>        vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;   </pre><pre><span class="lnum"> 169:  </span><span class="kwrd">else</span> </pre><pre><span class="lnum"> 170:  </span>        vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;   </pre><pre><span class="lnum"> 171:  </span>    D3DPRESENT_PARAMETERS d3dpp;   </pre><pre><span class="lnum"> 172:  </span>    d3dpp.BackBufferWidth            = 800;   </pre><pre><span class="lnum"> 173:  </span>    d3dpp.BackBufferHeight           = 600;   </pre><pre><span class="lnum"> 174:  </span>    d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;   </pre><pre><span class="lnum"> 175:  </span>    d3dpp.BackBufferCount            = 1;   </pre><pre><span class="lnum"> 176:  </span>    d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;   </pre><pre><span class="lnum"> 177:  </span>    d3dpp.MultiSampleQuality         = 0;   </pre><pre><span class="lnum"> 178:  </span>    d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD;    </pre><pre><span class="lnum"> 179:  </span>    d3dpp.hDeviceWindow              = hWnd;   </pre><pre><span class="lnum"> 180:  </span>    d3dpp.Windowed                   = <span class="kwrd">true</span>;   </pre><pre><span class="lnum"> 181:  </span>    d3dpp.EnableAutoDepthStencil     = <span class="kwrd">true</span>;    </pre><pre><span class="lnum"> 182:  </span>    d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;   </pre><pre><span class="lnum"> 183:  </span>    d3dpp.Flags                      = 0;   </pre><pre><span class="lnum"> 184:  </span>    d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;   </pre><pre><span class="lnum"> 185:  </span>    d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;   </pre><pre><span class="lnum"> 186:  </span>HRESULT hr = D3D9-&gt; CreateDevice(   </pre><pre><span class="lnum"> 187:  </span>        D3DADAPTER_DEFAULT,   </pre><pre><span class="lnum"> 188:  </span>        D3DDEVTYPE_HAL,   </pre><pre><span class="lnum"> 189:  </span>        hWnd,   </pre><pre><span class="lnum"> 190:  </span>        vp,   </pre><pre><span class="lnum"> 191:  </span>        &amp;d3dpp,   </pre><pre><span class="lnum"> 192:  </span>        &amp;Device);   </pre><pre><span class="lnum"> 193:  </span><span class="kwrd">while</span>(msg.message != WM_QUIT)   </pre><pre><span class="lnum"> 194:  </span>    {   </pre><pre><span class="lnum"> 195:  </span><span class="kwrd">if</span>(PeekMessage(&amp;msg, NULL, NULL, NULL, PM_REMOVE))   </pre><pre><span class="lnum"> 196:  </span>        {   </pre><pre><span class="lnum"> 197:  </span>            TranslateMessage(&amp;msg);   </pre><pre><span class="lnum"> 198:  </span>            DispatchMessage(&amp;msg);   </pre><pre><span class="lnum"> 199:  </span>        }   </pre><pre><span class="lnum"> 200:  </span><span class="kwrd">else</span> </pre><pre><span class="lnum"> 201:  </span>        {   </pre><pre><span class="lnum"> 202:  </span>            Setup();   </pre><pre><span class="lnum"> 203:  </span>            Display(0.016f);   </pre><pre><span class="lnum"> 204:  </span>        }   </pre><pre><span class="lnum"> 205:  </span>    }   </pre><pre><span class="lnum"> 206:  </span><span class="kwrd">return</span> 0;   </pre><pre><span class="lnum"> 207:  </span>}  </pre></div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>

<p>&nbsp;</p>
<p><font size="3"><strong>5. 效果：</strong></font></p>
<p><a href="http://www.cppblog.com/images/cppblog_com/xifeng/Windows-Live-Writer/811931b05715_12161/%E9%9B%AA%E4%B8%AD%E9%85%92%E5%AE%B6_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="雪中酒家" border="0" alt="雪中酒家" src="http://www.cppblog.com/images/cppblog_com/xifeng/Windows-Live-Writer/811931b05715_12161/%E9%9B%AA%E4%B8%AD%E9%85%92%E5%AE%B6_thumb_1.png" width="635" height="477"></a></p>
<p>&nbsp;</p>
<p><font size="3"><strong>6. 备注：</strong></font></p>
<p>&nbsp; 从3dmax2010中导出.x文件时，折腾了许久许久，最后发现是插件的版本不对，应使用2010版本的panda插件，而开始使用的是09版。</p>
<p>&nbsp;</p>
<p><font size="3"><strong>7. 附件：</strong></font></p><img src ="http://www.cppblog.com/xifeng/aggbug/165238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xifeng/" target="_blank">溪风蝉月</a> 2012-02-09 20:37 <a href="http://www.cppblog.com/xifeng/archive/2012/02/09/165238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浮生</title><link>http://www.cppblog.com/xifeng/archive/2011/12/06/161572.html</link><dc:creator>溪风蝉月</dc:creator><author>溪风蝉月</author><pubDate>Tue, 06 Dec 2011 04:57:00 GMT</pubDate><guid>http://www.cppblog.com/xifeng/archive/2011/12/06/161572.html</guid><wfw:comment>http://www.cppblog.com/xifeng/comments/161572.html</wfw:comment><comments>http://www.cppblog.com/xifeng/archive/2011/12/06/161572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xifeng/comments/commentRss/161572.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xifeng/services/trackbacks/161572.html</trackback:ping><description><![CDATA[&nbsp; 生命有多残酷，<br />&nbsp; 你就该有多坚强；<br />&nbsp; 人生是永远的竞争，<br />&nbsp; 奋斗是唯一出路。 <img src ="http://www.cppblog.com/xifeng/aggbug/161572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xifeng/" target="_blank">溪风蝉月</a> 2011-12-06 12:57 <a href="http://www.cppblog.com/xifeng/archive/2011/12/06/161572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>