Cocos2d-x C++ 延遲計算

cocos使用_xxxDirty屬性存儲xxx的值是否需要重新計算,並在需要的時候再重新進行計算,如:

void Node::setScaleY(float scaleY)
{
    if (_scaleY == scaleY)
        return;
    
    _scaleY = scaleY;
    //修改了屬性,變換矩陣需要重新計算,但此時僅修改標誌位
    _transformUpdated = _transformDirty = _inverseDirty = true;
}
const Mat4& Node::getNodeToParentTransform() const
{
    if (_transformDirty)
    {
        //...此時需要使用矩陣,重新計算矩陣
    }
    //...
    //重置標誌位
    _transformDirty = _additionalTransformDirty = false;
    return _transform;
}

如果每次設置屬性都重新計算矩陣,在需要設置大量屬性時就會產生大量不必要的計算,而實際上變換矩陣一般只在渲染時用到,這樣的方式可以減少不必要的計算,節省性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章