void ClippingRectangleNode::onBeforeVisitScissor()
{
if (_clippingEnabled) {
glEnable(GL_SCISSOR_TEST);
float scaleX = _scaleX;
float scaleY = _scaleY;
Node *parent = this->getParent();
while (parent) {
scaleX *= parent->getScaleX();
scaleY *= parent->getScaleY();
parent = parent->getParent();
}
const Point pos = convertToWorldSpace(Point(_clippingRegion.origin.x, _clippingRegion.origin.y));
GLView* glView = Director::getInstance()->getOpenGLView();
glView->setScissorInPoints(pos.x,
pos.y,
_clippingRegion.size.width * scaleX,
_clippingRegion.size.height * scaleY);
}
}
// 裁剪区内,父节点锚点是 中心,子节点是左下,用 renderTexture visit的时候裁剪区域不正确…
// 比如,父节点是中心,当放大的时候,是往两边扩展,而子节点是左下,是往右上扩展,这样裁剪的点会把左下部分的放大延伸区切掉。。。。,一直没改正,bug
这样的原因,是因为 裁剪里面放了一个 node,然后node 是 锚点左下,node 里又有一个 image,image 的锚点是中间,当把 裁剪node 放大1.2 倍,那么 image 会往两边放大,左边增加 0.1X,右边增加0.1X,但是 node 是左下锚点,放大是右上延伸,这样就会把 image放大的小部分给切掉