感觉会用到,先Mark一下
给我 /白嫖怪
web端就用不了jsb的保存了吧
嗯,jsb是原生环境才有的对象
mark一下
太棒了 比官方还靠谱
浏览器可行,但是android原生会在以下代码处进入死循环状态,感觉是没有找到方法,
cc.director.root.device.copyFramebufferToBuffer(texture.window.framebuffer, arrayBuffer, [region]);
使用的版本是creator3.3.2,有什么方法可破吗?
战略性mark~~~
啊,不好意思,才注意。。该方法不存在的话可能是device的问题,也可能是这个方法被删了(3.4版本确实删了这个方法)
3.X改进版已更新,读取像素信息大概如下(cc.RenderTexture.prototype.readPixels在3.4又加回来了):
/**
* 读取渲染纹理像素信息
* @param texture
*/
public static readPixels(texture: cc.RenderTexture): Uint8Array {
// 通用版本
var { width, height } = texture, gfxTexture = texture.getGFXTexture(), gfxDevice = texture’_getGFXDevice’, bufferViews = [],
region = new cc.gfx.BufferTextureCopy, buffer = new Uint8Array(width * height * 4);
// region.texOffset.x = region.texOffset.y = 0;
region.texExtent.width = width;
region.texExtent.height = height;
bufferViews.push(buffer);
gfxDevice && gfxDevice.copyTextureToBuffers(gfxTexture, bufferViews, [region]);
return buffer;
// 3.4及以上版本
// return texture.readPixels();
}
嗯,这个方法本身没问题(生成文件),截图生成的RGBA像素信息也没问题(拷贝到web上是能正常显示的),那唯一有问题的就是RGBA数据不适合这个方法,试过使用fileUtils获取内部的图片返回的数据是ArrayBuffer,且不为widthheight4这样的长度,说明这中间两种数据格式需要经过一层转化(官方说3.5后支持);
这里有个官方的帖子有现有的处理方式 CococsCreator 3.x 技术方案分享
好东西,另外提示一下,3.x的截图,如果用到翻转函数filpYImage,一定要保证图片width和height是整数,view.getVisibleSize()会提供小数点精度的数据,注意防坑
正好需要,感谢大佬分享。
mark~~截图总结
你们3.x截图在win模拟器上会显示纯黑色么,,,我在web和android都是正常的,就win异常
Mask!
mark 下
mark 正好学习一下
texture.readPixels()这个方法截图是有问题的,之前按照官方例子来就遇到了,需要调整了
先mark后看