Cocos2d-x描边字的实现
2014-09-28 14:48
274 查看
CCSprite* HelloWorld::createStrokeTexture(const char* value, float strokeValue, ccColor3B color) { // float fontSize = m_fontSize - 2 * strokeSize; /* 创建一个CCLabelTTF,含有期望字体样式,作为画笔 */ CCLabelTTF *label = CCLabelTTF::create(value, "Arial", 50); /* 通过label的大小来设置最终生成的纹理图片的大小,strokeValue为描边字体的偏移量,影响粗细 */ CCSize textureSize = label->getContentSize(); textureSize.width += 2 * strokeValue; textureSize.height += 2 * strokeValue; /* 监测OpenGl的错误状态 */ glGetError(); /* 创建一张纹理画布 */ CCRenderTexture *rt = CCRenderTexture::create(textureSize.width, textureSize.height); if (!rt) { CCLog("create render texture failed !!!!"); addChild(label); return 0; } /* 设置描边的颜色 */ label->setColor(color); /* *拿到源文字的混色机制,存储以备恢复,并设置新的目标混色机制 *混色机制设为:源颜色透明度(影响亮度)和目标颜色(影响颜色) */ ccBlendFunc originalBlend = label->getBlendFunc(); ccBlendFunc func = { GL_SRC_ALPHA, GL_ONE }; label->setBlendFunc(func); label->setAnchorPoint(ccp(0.5, 0.5)); /* 张开画布,开始绘画 */ rt->begin(); for (int i = 0; i < 360; i += 5)//每变化5度绘制一张 { float r = CC_DEGREES_TO_RADIANS(i); //度数格式的转换 label->setPosition(ccp(textureSize.width * 0.5f + sin(r) * strokeValue, textureSize.height * 0.5f + cos(r) * strokeValue)); /* CCRenderTexture的用法,在begin和end之间visit的纹理,都会画在CCRenderTexture里面 */ label->visit();//画了一次该label } /* 恢复原始的label并绘制在最上层 */ label->setColor(ccWHITE); label->setBlendFunc(originalBlend); label->setPosition(ccp(textureSize.width * 0.5f, textureSize.height * 0.5f)); label->visit(); /* 在画布上绘制结束,此时会生成一张纹理 */ rt->end(); /* 取出生成的纹理,添加抗锯齿打磨,并返回 */ CCTexture2D *texture = rt->getSprite()->getTexture(); texture->setAntiAliasTexParameters();// setAliasTexParameters(); CCSprite* sp = CCSprite::createWithTexture(texture); sp->setFlipY(true); return sp; }
相关文章推荐
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d实现CCLabelTTF真正字体描边效果
- cocos2d-x 利用CCLabelTTF实现文字描边
- 卡通渲染Cocos2d-x中的实现(描边与对物体表面颜色的色阶化)
- cocos2d实现CCLabelTTF真正字体描边效果
- 【Cocos2d-x】图片描边的一种比较好的shader实现方法
- cocos2d-x之字体描边效果shader实现
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- 【复习笔记】 cocos2d-x 2.x 渲染特效实现 六 节点树的描边效果
- cocos2d-x 2.2.0 图片选中聚焦 ,图片描边 CCClippingNode 实现
- cocos2d-x 2.2.0 图片选中聚焦 ,图片描边 CCClippingNode 实现
- [置顶] cocos2d实现CCLabelTTF真正字体描边效果
- cocos2d-x底层修改实现的文字描边解决方案
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x帧动画实现(续)
- 用Ogre MyGUI实现快速的中文绘制以及下划线描边图文混排等效果
- Cocos2d 自定义Scene的实现方法
- cocos2d-x 使用action实现各种动画效果
- cocos2d 实现 ScrollView