嵌套使用RenderTexture的问题

今天遇到一个RenderTexture的问题。
在onBegin里,RenderTexture会根据缓存纹理的大小设置viewport,然后在onEnd里恢复。让我诧异的是,这里是直接把viewport恢复为默认设置,而不是像其他状态那样,恢复到onBegin时的设置。
通常情况下这是ok的,不过,当需要在一个RenderTexture的begin/end对里嵌套另一个RenderTexture时,就有问题了,因为内层RenderTexture在onEnd时,破坏了外层RenderTexture的viewport,结果渲染出来的东西就不正确了。
我的修改方案是:

给RenderTexture增加了一个成员Rect _oldViewPort;
在onBegin时记录当前的viewport:
GLfloat vp[4] = {};
glGetFloatv(GL_VIEWPORT, vp);
_oldViewPort.setRect(vp[0], vp[1], vp[2], vp[3]);
然后onEnd时再用_oldViewPort恢复:
// director->setViewport();
// const auto& vp = Camera::getDefaultViewport();
// glViewport(vp._left, vp._bottom, vp._width, vp._height);
glViewport(_oldViewPort.origin.x, _oldViewPort.origin.y, _oldViewPort.size.width, _oldViewPort.size.height);

目前看来是可以正常渲染了。但不清楚是否会导致其他问题,如果有的话,还请官方斧正。