Cocos2dx V4 RenderTexture::newImage返回0

代码如下:

auto render = RenderTexture::create(100, 100);
render->retain();
render->beginWithClear(1, 1, 1, 1);
render->end();
render->newImage([this](Image *image){
auto data = image->getData();
auto width = image->getWidth();
auto height = image->getHeight();
});

在V4版本中,获得的image->getData()返回的缓冲区内容全是0,长度跟宽度是正常的,在网上查找有说过在3.x版本中要加入:
Director::getInstance()->getRenderer()->render();
经测试在3.x版本中有效,在V4中调用render()也无效。不知道是不是我调用得不对,请大佬赐教如何正确使用这个接口。

系统:MacOS Big Sur 11.4
IDE:xcode 12.5

已解决!
后来我参考了RenderTexture::saveToFile()的实现,saveToFile()内部也调用了newImage()的接口,只不过它不是在主线程中调用的,它是通过
Director::getInstance()->getRenderer()->addCommand(&_saveToFileCommand);
推到另一条线程中,然后再调用了newImage()接口,这样就能正确获取Image::getData()。

虽然有点繁琐,不过通过这个也能将纹理重新转化成Image,也能获得每个像素的色值。

表示对底层不太熟悉,说不上来区别在哪里,求大佬们指教。