|
<p><img height="480" alt="" src="http://www.cocoachina.com/bbs/attachment/6_37_13fbac3ed42984e.jpg" width="320"/></p>
<p><img alt="" src="http://www.cocoachina.com/bbs/attachment/6_37_24c484903d37635.jpg"/><br/><span id="more-270"></span><br/>Seven同学在<a href="http://www.cocoachina.com/bbs" target="_blank">论坛</a>讨论<a href="http://www.cocoachina.com/bbs/htm_data/6/0810/750.html" target="_blank">怎样显示MD2</a>,正好我以前在PSP上有个MD2的类,我把它移植了过来,给大家参考一下或拿来玩玩。</p>
<p>在Wrapper里,我也加了两个新功能,一个是Enable2D,一个是Enable3D,方便我们混合2D/3D。</p>
<p> </p>
<div class="geshi no="no" objc">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">void</span> Enable2D<span class="br0">(</span><span class="br0">)</span></div>
<li class="li1">
<div class="de1"><span class="br0">{</span></div>
<li class="li1">
<div class="de1"> <span class="kw4">int</span> <span class="kw4">width</span> <span class="sy0">=</span> SCREEN_WIDTH;</div>
<li class="li1">
<div class="de1"> <span class="kw4">int</span> <span class="kw4">height</span> <span class="sy0">=</span> SCREEN_HEIGHT;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glViewport <span class="br0">(</span><span class="nu0">0</span>, <span class="nu0">0</span>, <span class="kw4">width</span>, <span class="kw4">height</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glMatrixMode <span class="br0">(</span>GL_PROJECTION<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glLoadIdentity <span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glOrthof<span class="br0">(</span><span class="nu0">0</span>, <span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="kw4">width</span>, <span class="nu0">0</span>, <span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="kw4">height</span>, <span class="nu0">0</span>, <span class="nu0">100</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glMatrixMode <span class="br0">(</span>GL_MODELVIEW<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glLoadIdentity<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glEnable <span class="br0">(</span>GL_BLEND<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glEnable <span class="br0">(</span>GL_TEXTURE_2D<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glDisable <span class="br0">(</span>GL_CULL_FACE<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glDisable <span class="br0">(</span>GL_DEPTH_TEST<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glDisable <span class="br0">(</span>GL_LIGHTING<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> <span class="co1">//glDisableClientState (GL_NORMAL_ARRAY);</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"><span class="br0">}</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"><span class="kw4">void</span> Enable3D<span class="br0">(</span><span class="br0">)</span></div>
<li class="li1">
<div class="de1"><span class="br0">{</span> </div>
<li class="li1">
<div class="de1"> <span class="kw4">int</span> <span class="kw4">width</span> <span class="sy0">=</span> SCREEN_WIDTH;</div>
<li class="li1">
<div class="de1"> <span class="kw4">int</span> <span class="kw4">height</span> <span class="sy0">=</span> SCREEN_HEIGHT;</div>
<li class="li1">
<div class="de1"> <span class="kw4">float</span> aspect <span class="sy0">=</span> <span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="kw4">width</span><span class="sy0">/</span><span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="kw4">height</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glViewport <span class="br0">(</span><span class="nu0">0</span>, <span class="nu0">0</span>, <span class="kw4">width</span>, <span class="kw4">height</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glScissor <span class="br0">(</span><span class="nu0">0</span>, <span class="nu0">0</span>, <span class="kw4">width</span>, <span class="kw4">height</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> <span class="co1">//glMatrixMode (GL_MODELVIEW);</span></div>
<li class="li1">
<div class="de1"> <span class="co1">//glLoadIdentity ();</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glMatrixMode <span class="br0">(</span>GL_PROJECTION<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glLoadIdentity <span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> InitPerspective <span class="br0">(</span><span class="nu0">60</span>.f, aspect, <span class="nu0">0</span>.1f, <span class="nu0">1000</span>.f<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glMatrixMode <span class="br0">(</span>GL_MODELVIEW<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glLoadIdentity <span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glEnable <span class="br0">(</span>GL_CULL_FACE<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> <span class="co1">//glDisable (GL_BLEND);</span></div>
<li class="li1">
<div class="de1"> glEnable <span class="br0">(</span>GL_DEPTH_TEST<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> <span class="co1">//glEnable (GL_LIGHTING);</span></div>
<li class="li1">
<div class="de1"> <span class="co1">//glEnableClientState (GL_NORMAL_ARRAY);</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> <span class="co1">//glEnable(GL_NORMALIZE); </span></div>
<li class="li1">
<div class="de1"><span class="br0">}</span></div></li></ol></div>
<p>因为我们没有用lighting, 我把Normal Array暂时弄走了。</p>
<p>这个例子,每隔8秒会换到另一个动作。人的模型是732面,枪是102面。</p>
<p> </p>
<p> </p>
<p><i>本篇文章的例子在<a href="http://www.cocoachina.com/bbs/htm_data/6/0810/752.html" target="_blank">这里</a>,欢迎大家讨论。</i></p> |
|