cocos2d-x中实现区域裁剪
来源:互联网 发布:mac在美国多少钱一支 编辑:程序博客网 时间:2024/04/30 15:26
如果要在cocos2d-x中实现区域裁剪,一般要重写 visit函数:
void visit(void);
void MyControl::visit(void)
{
glEnable(GL_SCISSOR_TEST);
const float s = CCDirector::sharedDirector()->getContentScaleFactor();
CCPoint selfPos = this->getPosition();
CCSize selfContentSize = this->getContentSize();
CCLog("selfPos = %d,%d, selfContentSize =%d,%d ,s = %f", selfPos.x, selfPos.y ,selfContentSize.width, selfContentSize.height ,s);
// 如果是自己的锚点是(0.5,0.5)
// glScissor(selfPos.x *s - selfContentSize.width*s * 0.5f,
// selfPos.y * s - selfContentSize.height*s * 0.5f,
// selfContentSize.width*s,
// selfContentSize.height*s);
//自己的锚点是(0,0)
glScissor(selfPos.x *s ,
selfPos.y * s ,
selfContentSize.width*s,
selfContentSize.height*s);
CCNode::visit();//显示父类的内容
glDisable(GL_SCISSOR_TEST);
}
一般是这么写的,但是后面移植到安卓机器上面的时候,发现内容完全显示不出来了,查了些资料,改成如下的实现就好了:
void MyControl::visit(void)
{
glEnable(GL_SCISSOR_TEST);
CCPoint selfPos = this->getPosition();
CCSize selfContentSize = this->getContentSize();
CCLog("selfPos = %d,%d, selfContentSize =%d,%d ,s = %f", selfPos.x, selfPos.y ,selfContentSize.width, selfContentSize.height ,s);
float scaleX = CCEGLView::sharedOpenGLView()->getScaleX();
float scaleY = CCEGLView::sharedOpenGLView()->getScaleY();
CCRect viewPortRect = CCEGLView::sharedOpenGLView()->getViewPortRect();
glScissor(selfPos.x *scaleX + viewPortRect.origin.x ,
selfPos.y * scaleY + viewPortRect.origin.y ,
selfContentSize.width*scaleX,
selfContentSize.height*scaleY);
CCNode::visit();//显示父类的内容
glDisable(GL_SCISSOR_TEST);
}
如上,iOS跟 安卓系统都没有问题了,最好这样设置。
- cocos2d-x中实现区域裁剪
- cocos2d-x之区域裁剪
- cocos2d-x之区域裁剪
- cocos2d-x之区域裁剪
- cocos2d-x之区域裁剪
- [COCOS2D-X]裁剪实现
- COCOS2D-X]裁剪实现
- cocos2d-x新手引导遮罩CCClippingNode裁剪区域
- Cocos2d用裁剪区域CCClippingNode实现滚动字幕
- Cocos2d-x 3.x节点裁剪以及实现跑马灯
- 裁剪区域的实现
- 【Cocos2d-x】节点裁剪 ClippingNode
- cocos2d-x中实现对话框
- Cocos2d-x 3.x ClippingNode裁剪节点
- cocos2dx中创建裁剪区域 实现在指定区域精灵才能出现
- cocos2d-x CCLayer可视区域
- cocos2d-x 3.x 不规则点击区域
- iOS实现动态区域裁剪图片
- 14-1
- UVa 10391 - Compound Words 字符串hash
- 14、C语言中的空类型指针
- 15、C语言用户自定义数据类型
- 16、C语言指针小结
- cocos2d-x中实现区域裁剪
- 17、C语言文件及文件操作
- 隐藏UIScrollView的滚动条
- 18、C语言中预处理及位段
- 求数组中的最长平台
- 19、C语言小结
- Java测试框架比较:TestNG VS JUnit 4
- 20、C语言防止重复编译
- alsa声卡驱动分析总结