首頁 > 資料庫 > mysql教程 > 【转】cocos2dx橡皮擦效果,CCRenderTexture的使用

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

WBOY
發布: 2016-06-07 15:32:28
原創
1769 人瀏覽過

有关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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板