好记性不如铅笔头

C && C++, cocos2dx, 编程

cocos2dx学习笔记:遮罩

最近项目中用到了cocos2dx来开发一个基于陀螺仪的demo,忙了半个星期,一边学习一边开发,总算搞了出来。这里备份下开发中学习到的一些cocos2dx知识。

cocos2dx遮罩的使用

开发demo的时候用到了遮罩,实现起来比较简单,这里备份下代码:

void XXLayer::visit( void )
{
	glEnable(GL_SCISSOR_TEST);
    
	float   scaleX = 1;
	float   scaleY = 1;
    
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	scaleX = scaleY = CCEGLView::sharedOpenGLView()->getFrameZoomFactor();
#endif
    
	CCPoint leftdown = XXXX;

	glScissor(scaleX * leftdown.x,scaleY * leftdown.y,
              scaleX * (spriteSize.width),
              scaleY * (spriteSize.height) );
    
	CCNode::visit();
	glDisable(GL_SCISSOR_TEST);
}

 通过重写Layer的visit方法,可以实现遮罩的功能。其中,由于win7开发时,画面比较大,在程序初始化时进行了缩放。代码如下:

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    CCDirector* pDirector = CCDirector::sharedDirector();
    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

	pDirector->setOpenGLView(pEGLView);

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	pEGLView->setFrameZoomFactor(0.8f);
#endif

。。。
。。。
    }

 

发表评论

2 × 2 =

此站点使用 Akismet 来减少垃圾评论。了解我们如何处理您的评论数据