|
<div class="ostContent"><span style="COLOR: rgb(51,51,51)"><span class="Apple-style-span" style="FONT-STYLE: italic">
<p><img height="742" alt="" src="http://www.cocoachina.com/bbs/attachment/6_37_908f121fd07cf08.jpg" width="386"/></p>
<p>在群里有同学们为了怎样用OpenGL ES缩放图像而烦恼,正好我也很久没更新这个教程了,所以把第三篇的代码更新了一下,加了缩放和混色功能。</p>
<p><span id="more-266"></span></p>
<p>我也用了SDK Final的模块,重新建立了一次项目。</p>
<p>这次的修改,主要是CCSprite的render,大家可以参考一下,怎么用glScalef来做缩放。</p>
<div class="geshi no=" objc? no?>
<ol>
<li class="li1">
<div class="de1"><span class="kw4">void</span> CCSprite<span class="sy0">::</span><span class="kw4">render</span><span class="br0">(</span><span class="kw4">float</span> x, <span class="kw4">float</span> <span class="kw4">y</span>, <span class="kw4">float</span> angle, <span class="kw4">float</span> xScale, <span class="kw4">float</span> yScale<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">y</span> <span class="sy0">=</span> SCREEN_HEIGHT<span class="sy0">-</span><span class="kw4">y</span>; <span class="co1">// for OpenGL ES, (0,0) is at lower left corner!</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> GLfloat _minU <span class="sy0">=</span> mX<span class="sy0">/</span>mTexture<span class="sy0">-</span>>getTextureWidth<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> GLfloat _maxU <span class="sy0">=</span> <span class="br0">(</span>mX<span class="sy0">+</span>mWidth<span class="br0">)</span><span class="sy0">/</span>mTexture<span class="sy0">-</span>>getTextureWidth<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> GLfloat _minV <span class="sy0">=</span> mY<span class="sy0">/</span>mTexture<span class="sy0">-</span>>getTextureHeight<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> GLfloat _maxV <span class="sy0">=</span> <span class="br0">(</span>mY<span class="sy0">+</span>mHeight<span class="br0">)</span><span class="sy0">/</span>mTexture<span class="sy0">-</span>>getTextureHeight<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> GLfloat coordinates<span class="br0">[</span><span class="br0">]</span> <span class="sy0">=</span> </div>
<li class="li1">
<div class="de1"> <span class="br0">{</span></div>
<li class="li1">
<div class="de1"> _minU, _maxV,</div>
<li class="li1">
<div class="de1"> _maxU, _maxV,</div>
<li class="li1">
<div class="de1"> _minU, _minV,</div>
<li class="li1">
<div class="de1"> _maxU, _minV</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"> GLfloat xx <span class="sy0">=</span> <span class="sy0">-</span> mWidth<span class="sy0">/</span><span class="nu0">2</span>;</div>
<li class="li1">
<div class="de1"> GLfloat yy <span class="sy0">=</span> <span class="sy0">-</span> mHeight<span class="sy0">/</span><span class="nu0">2</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> GLfloat vertices<span class="br0">[</span><span class="br0">]</span> <span class="sy0">=</span> </div>
<li class="li1">
<div class="de1"> <span class="br0">{</span></div>
<li class="li1">
<div class="de1"> xx, yy, </div>
<li class="li1">
<div class="de1"> xx<span class="sy0">+</span>mWidth, yy, </div>
<li class="li1">
<div class="de1"> xx, yy<span class="sy0">+</span>mHeight,</div>
<li class="li1">
<div class="de1"> xx<span class="sy0">+</span>mWidth, yy<span class="sy0">+</span>mHeight </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"> mTexture<span class="sy0">-</span>>bind<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glColor4f<span class="br0">(</span>mRed, mGreen, mBlue, mAlpha<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glPushMatrix<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glTranslatef<span class="br0">(</span>x, <span class="kw4">y</span>, <span class="nu0">0</span>.0f<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glRotatef<span class="br0">(</span>angle, <span class="nu0">0</span>.0f, <span class="nu0">0</span>.0f, <span class="nu0">1</span>.0f<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glScalef<span class="br0">(</span>xScale, yScale, <span class="nu0">1</span>.0f<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glVertexPointer<span class="br0">(</span><span class="nu0">2</span>, GL_FLOAT, <span class="nu0">0</span>, vertices<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glTexCoordPointer<span class="br0">(</span><span class="nu0">2</span>, GL_FLOAT, <span class="nu0">0</span>, coordinates<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glDrawArrays<span class="br0">(</span>GL_TRIANGLE_STRIP, <span class="nu0">0</span>, <span class="nu0">4</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> glPopMatrix<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> glColor4f<span class="br0">(</span><span class="nu0">1</span>.0f, <span class="nu0">1</span>.0f, <span class="nu0">1</span>.0f, <span class="nu0">1</span>.0f<span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"><span class="br0">}</span></div></li></ol></div>
<p>本文例子代码在<a href="http://www.cocoachina.com/bbs/read.php?tid-487-toread-1.html" target="_blank">这里</a>,请登录后下载。</p></span></span>
<p> </p></div> |
|