Cocos2dx使用ClippingNode在ios上出现图片全白区域

14 篇文章 0 订阅

解决方案:修改OpenGL渲染参数

void AppDelegate::initGLContextAttrs() {

	#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
		GLContextAttrs glContextAttrs = { 8, 8, 8, 8, 24, 8 };
	#else
		GLContextAttrs glContextAttrs = { 5, 6, 5, 0, 16, 8 };
	#endif
	GLView::setGLContextAttrs(glContextAttrs);

}

裁剪方法示例:

/*
	* 设置相关图片,返回设置好后的精灵
	* @param imgPath:头像图片路径
	* @param maskPath:模板图片路径
	* @param circlePath:边框路径
	*/
	void CGameClientView::addMyHeadCirCleIcon(Texture2D *iconTexture,CSpriteImage *mask, CSpriteImage *parentNode)
	{
		do 
		{
			CC_BREAK_IF(!m_pUandDbarLayer || !m_pDownBarSprite);
			CC_BREAK_IF(!iconTexture);
			CC_BREAK_IF(!mask || !parentNode);

			parentNode->removeChildByTag(91);
			parentNode->removeChildByTag(200);
			parentNode->removeChildByTag(118);

			auto clipNode = ClippingNode::create();

			/* 底板 */
			auto circle = Sprite::create("4/LayerGameRes/bottom_my_icon_bg.png");
			circle->setPosition(mask->getPosition());
			circle->setTag(118);
			parentNode->addChild(circle);

			/* auto mask = Sprite::create(maskPath); */
			clipNode->setAlphaThreshold(0.0f);
			clipNode->setStencil(circle);

			/* auto img = Sprite::create(imgPath); */
			auto img = Sprite::createWithTexture(iconTexture);

			/* 将头像大小缩放为模板大小 边框有误差 减去20pixel*/
			img->setScaleX((mask->getContentSize().width-20.f)/img->getContentSize().width);
			img->setScaleY((mask->getContentSize().height-20.f)/img->getContentSize().height);
			img->setPosition(mask->getPosition());
			clipNode->addChild(img);
			clipNode->setTag(200);
			parentNode->addChild(clipNode);

			clipNode->setInverted(false);

			/* 裁剪的有锯齿 所以加个中心透明带边框 像素尺寸一只的图 覆盖 */
			auto side = Sprite::create("4/LayerGameRes/bottom_my_icon_sencil.png");
			side->setPosition(mask->getPosition());
			side->setTag(91);
			parentNode->addChild(side);

		} while (0);
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值