渲染到CCRenderTexture不起作用

时间:2015-08-16 16:57:05

标签: c++ cocos2d-x

我尝试使用CCRenderTexture创建一个与Terrain类一起使用的高度图。我不知道这是否是最佳方式,我是opengl和cocos2d-x的新手,所以请耐心等待。

auto* renderTexHeightMap = CCRenderTexture::create(width, height);
renderTexHeightMap->begin();
glRasterPos2i(0, 0);
glDrawPixels(width, height, GL_RGB, GL_FLOAT, pixelBuffer);
renderTexHeightMap->end();

renderTexHeightMap->saveToFile("heightmap.jpg", false);

我知道pixelBuffer包含我想要的数据(灰度像素数据),但每当我调用CCRenderTexture :: saveToFile时,我得到的都是黑色图片。我错过了什么?

1 个答案:

答案 0 :(得分:1)

rendertexture会延迟一帧渲染,所以你需要在下一帧保存ToFile,我的英语不好,你有没有理解? 您可以使用DelayTime来执行此操作或以其他方式 我的方式:我的代码类型是lua

local function save()
  renderTexture:saveToFile("heightmap.jpg",false)
end
local callfunc = cc.CallFunc:create(save)
local dela = cc.DelayTime:create(0.01)
local seq = cc.Sequence:create(dela,callfunc)
node:runAction(seq)