作者: Cocoa China
目前dr_watson为Cocoachina读者带来的原创优秀教学《游戏是这样写成的》系列文章已经发表了三篇,给广大iPhone开发者在游戏开发方面以极大的帮助。今天给读者们带来第四篇:缩放和混色,相信同样会让广大iPhone开发者受益非浅。
《游戏是这样写成的》iPhone游戏开发系列教学,作者:dr_watson,优秀iPhone游戏CubicMan开发者。
第一篇: 建立 OpenGL ES 项目
第二篇: 混合 C/C++/Obj-C 的应用
第三篇: 简单的游戏框架
cocoachina.com专稿,如需转载请提前联系。

在群里有同学们为了怎样用OpenGL ES缩放图像而烦恼,正好我也很久没更新这个教程了,所以把第三篇的代码更新了一下,加了缩放和混色功能。
我也用了SDK Final的模块,重新建立了一次项目。
这次的修改,主要是CCSprite的render,大家可以参考一下,怎么用glScalef来做缩放。
-
void CCSprite::render(float x, float y, float angle, float xScale, float yScale)
-
{
-
y = SCREEN_HEIGHT-y; // for OpenGL ES, (0,0) is at lower left corner!
-
-
GLfloat _minU = mX/mTexture->getTextureWidth();
-
GLfloat _maxU = (mX+mWidth)/mTexture->getTextureWidth();
-
GLfloat _minV = mY/mTexture->getTextureHeight();
-
GLfloat _maxV = (mY+mHeight)/mTexture->getTextureHeight();
-
-
GLfloat coordinates[] =
-
{
-
_minU, _maxV,
-
_maxU, _maxV,
-
_minU, _minV,
-
_maxU, _minV
-
};
-
-
GLfloat xx = - mWidth/2;
-
GLfloat yy = - mHeight/2;
-
-
GLfloat vertices[] =
-
{
-
xx, yy,
-
xx+mWidth, yy,
-
xx, yy+mHeight,
-
xx+mWidth, yy+mHeight
-
};
-
-
mTexture->bind();
-
-
glColor4f(mRed, mGreen, mBlue, mAlpha);
-
-
glPushMatrix();
-
glTranslatef(x, y, 0.0f);
-
glRotatef(angle, 0.0f, 0.0f, 1.0f);
-
glScalef(xScale, yScale, 1.0f);
-
glVertexPointer(2, GL_FLOAT, 0, vertices);
-
glTexCoordPointer(2, GL_FLOAT, 0, coordinates);
-
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
glPopMatrix();
-
-
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
-
-
}
本文例子代码在这里,请登录后下载。