在游戏中我们一个非常重要的元素就是图片,给最初的文字Mud游戏带来了多姿多彩。在3D游戏中,一个图片是采用什么结构表示的呢?其实灰常简单,你也能想得到:
1张纹理图,2个三角面片。那接下来就让我们看看cocos2d-x.们带来什么惊喜不?
游戏世界中的数据结构在我看来可以分为两种:一个是资源,另外一个是物理对象。是不是有点不好理解?资源就是一些原材料,比如纹理啊,声音啊,不能独立的作为实体存在。物理对象则是我们对游戏世界中真实存在的东西的一种抽象,资源必须依附在物理对象上。比如说一个精灵肯定拥有一张纹理。废话少说,进入我们的正题。
先看看最重要的资源,纹理的表示。让我们仔细探究一下cocos2d-x中纹理是如何表示的
CCTexture2D的结构
class CC_DLL CCTexture2D : public CCObject
{
public:
bool initWithData(const void* data, CCTexture2DPixelFormat pixelFormat, unsigned int pixelsWide, unsigned int pixelsHigh, const CCSize& contentSize); //初始化纹理
bool initWithImage(CCImage * uiImage);
void drawAtPoint(const CCPoint& point); // 绘制
void drawInRect(const CCRect& rect);
protected:
CC_PROPERTY_READONLY(GLuint, m_uName, Name) // 唯一的标示
CC_PROPERTY_READONLY(unsigned int, m_uPixelsWide, PixelsWide)
CC_PROPERTY_READONLY(unsigned int, m_uPixelsHigh, PixelsHigh)
CC_PROPERTY(GLfloat, m_fMaxS, MaxS)
CC_PROPERTY(GLfloat, m_fMaxT, MaxT)
CC_PROPERTY(CCGLProgram*, m_pShaderProgram, ShaderProgram); // 渲染时使用的Shader
}
从上面的数据结构我们可以看到CCTexture2D还是蛮简单的,包含有: