CCFontAtlas:
代码:
struct FontLetterDefinition //字体字母定义
{
unsigned short letteCharUTF16;//utf-16编码
float U;
float V;
float width;//宽
float height;//高
float offsetX;//水平偏移量
float offsetY;//竖直偏移量
int textureID;//纹理ID
bool validDefinition;//是否是有效定义
int xAdvance;
int clipBottom;
};
// 字体图集
class CC_DLL FontAtlas : public Ref
{
public:
static const int CacheTextureWidth;//缓存纹理宽
static const int CacheTextureHeight;//缓存纹理高
static const char* CMD_PURGE_FONTATLAS;
static const char* CMD_RESET_FONTATLAS;
/**
* @js ctor
*/
FontAtlas(Font &theFont);
/**
* @js NA
* @lua NA
*/
virtual ~FontAtlas();
// 添加字母定义
void addLetterDefinition(const FontLetterDefinition &letterDefinition);
// 得到字母定义
bool getLetterDefinitionForChar(char16_t letteCharUTF16, FontLetterDefinition &outDefinition);
// 准备字母定义
bool prepareLetterDefinitions(const std::u16string& utf16String);
// 得到纹理
inline const std::unordered_map<ssize_t, Texture2D*>& getTextures() const{ return _atlasTextures;}
// 添加纹理
void addTexture(Texture2D *texture, int slot);
float getCommonLineHeight() const;
void setCommonLineHeight(float newHeight);
Texture2D* getTexture(int slot);
const Font* getFont() const;
/** listen the event that renderer was recreated on Android/WP8
It only has effect on Android and WP8.
*/
// 在安卓和WP8中再次渲染
void listenRendererRecreated(EventCustom *event);
/** Removes textures atlas.
It will purge the textures atlas and if multiple texture exist in the FontAtlas.
*/
// 清除纹理图集
void purgeTexturesAtlas();
/** sets font texture parameters:
- GL_TEXTURE_MIN_FILTER = GL_LINEAR
- GL_TEXTURE_MAG_FILTER = GL_LINEAR
*/
// 设置字体纹理属性
void setAntiAliasTexParameters();
/** sets font texture parameters:
- GL_TEXTURE_MIN_FILTER = GL_NEAREST
- GL_TEXTURE_MAG_FILTER = GL_NEAREST
*/
// 设置字体纹理属性
void setAliasTexParameters();
protected:
// 释放纹理
void relaseTextures();
std::unordered_map<ssize_t, Texture2D*> _atlasTextures;
std::unordered_map<unsigned short, FontLetterDefinition>

本文深入解析了Cocos2d-x库中的CCFontAtlas组件,用于高效地显示文本。接着介绍了CCGrid类,它提供网格变形效果。同时探讨了CCGLBufferedNode,它优化了GPU缓冲区的使用,提高渲染效率。最后,讲解了CCGrabber,一个用于捕获和处理图像数据的工具。

1968

被折叠的 条评论
为什么被折叠?



