RenderTexture截图背景空白的问题解决方案

来源:互联网 发布:f22 知乎 编辑:程序博客网 时间:2024/06/06 01:46

RenderTexture是个很好的截图方法,可以调用此方法进行屏幕截图。
但是有时偶见背景空白现象。
这里先讲讲此方法怎么用。

RenderTexture用法

lua中使用

    local texture = cc.RenderTexture:create(display.width,display.height)    texture:setPosition(display.width/2,display.height/2)    texture:begin()    _G.display.getRunningScene():visit()    texture:endToLua()    texture:saveToFile('aaaaaaaaaaaa.png',cc.IMACG_FORMAT_PNG)    --这是lua截图方法。很直观。    --获取位置    --截图位置    --开始    --场景截图运行    --结束    --保存(在项目工程下)    --建议使用全局变量,避免发生不必要的错误

js中的使用

这里写图片描述
当然js的这块代码中,运行是会背景空白的,在有层级的场景中。

比如像这样的背景空白。
这里写图片描述


重点内容

敲黑板!!!
如果在代码中使用了:
cc.RenderTexture:create(size.width,size.height)
那么改成cc.RenderTexture:create(size.width, size.height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888, 0x88F0)

0x88F0是OpenGL纹理尺寸限制,其定义的width和height必须是2的N次幂:2,4, 8, 16, 32, 64, 128, 256, 512,1024,是合法的,宽高可以是 2x4, 16x128等等。
因此可能是因为屏幕绘制图片的时候图片大小不符合这个标准,因此需要添加这个0x88F0这个参数。

但是,这个是我查阅资料,推理出来的解释。如果有知道具体原因我,可以留言交流,不胜感谢!

原创粉丝点击