> 데이터 베이스 > MySQL 튜토리얼 > 【转】cocos2dx橡皮擦效果,CCRenderTexture的使用

【转】cocos2dx橡皮擦效果,CCRenderTexture的使用

WBOY
풀어 주다: 2016-06-07 15:32:28
원래의
1783명이 탐색했습니다.

有关openGl方面,请参考http://cn.cocos2d-x.org/tutorial/show?id=1482 CCRenderTexture:http://www.cnblogs.com/andyque/archive/2011/07/01/2095479.html 根据这两篇博文,试了一下,发现一些注意点,记录下来: 1.经我尝试,感觉最好用的是DrawNode,可

有关openGl方面,请参考http://cn.cocos2d-x.org/tutorial/show?id=1482

CCRenderTexture:http://www.cnblogs.com/andyque/archive/2011/07/01/2095479.html


根据这两篇博文,试了一下,发现一些注意点,记录下来:

1.经我尝试,感觉最好用的是DrawNode,可以设置zOrder为负数,擦除时可以不让用户看见,也不会有锯齿。

直接写一个触摸的函数,一看便知:

bool HelloWorld::TouchBegan(Touch* touch, Event* event)
{

obj_Erase->clear();
auto location = touch->getLocation();


float fRadius = 30.0f;/// const int nCount = 100;/// const float coef = 2.0f * (float)M_PI / nCount; /// static CCPoint circle[nCount];    /// for (unsigned int i = 0; i float rads = i*coef; /// circle[i].x = fRadius * cosf(rads); /// circle[i].y = fRadius * sinf(rads); /// }
obj_Erase->drawPolygon(circle, nCount, ccc4f(0, 0, 0, 0), 0, ccc4f(0, 0, 0, 0));//绘制这个多边形!
BlendFunc blendFunc = { GL_ONE, GL_ZERO };
obj_Erase->setPosition(location.x - 320, location.y - 180);//调整位置,适应RenderTexture
obj_Erase->setBlendFunc(blendFunc);
myRt->begin();
obj_Erase->visit();
myRt->end();

}

obj_Erase就是一个DrawNode,全局变量。

obj_Erase = DrawNode::create();
this->addChild(obj_Erase,-1);

刚开始Clear一下DrawNode,这样不会使GL verts一路猛增。最后卡的一发不卡收拾。

画圆的方法是抄来的,多边形代替圆,点个赞!


关于DrawNode的zOrder最好设置负数,或者不会挡住其他精灵的位置。不然会看见如上的黑圈。

【转】cocos2dx橡皮擦效果,CCRenderTexture的使用


2.CCRenderTexture

CCRenderTexture的Begin,我们绘制的东西,visit之后的坐标会根据CCRenderTexture的坐标系重新计算,CCRenderTexture左下角为原点。


所以就有了位置的调整:

obj_Erase->setPosition(location.x - 320, location.y - 180);


网络发达,学会利用,培训坑钱。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿