当前引擎版本没有readPixels接口,摄像机截图有些麻烦
1.web端
截图思路
- 将RenderTexture的像素数据转为Base64
- 将Base64数据写入文件
注: 这里省略了文件保存的方法实现,拿到Base64格式的数据直接写入文件应该就可以了
2.Android端
截图思路
- 将RenderTexture的像素数据拼接为字符串格式
- 将字符串格式数据传输给java层
- java层解析字符串数据并保存到手机相册
js层
3.3.1版本貌似没有copyFramebufferToBuffer接口
我这里用copyTextureToBuffers代替了
如果有copyFramebufferToBuffer接口,可以使用copyRenderTexture方法里注释掉的两行
java层
注:
这种方式js给java传输的数据量比较大,保存图片比较慢,转成Base64格式最好
不过Android环境下canvas.getContext(‘2d’),canvas.toDataURL(‘image/jpeg’, 0.1)两个方法有问题
我这里也不知道图片像素数据如何转换成Base64格式,所以使用了拼接的方式
后续3.4.0版本好像就有readPixels接口了,另外保存文件应该可以使用jsb.fileUtils下的方法
补充: 截取单个节点
截取单个节点,需要让摄像机拍摄的部分只有目标节点的大小
RenderTexture大小设置为目标节点大小
OrthoHeight设置为targetTexture高度的一半
如果需要透明背景
ClearFlags设置为DONT_CLEAR
ClearColor Alpha通道设置为0
另外java保存图片时候压缩算法要选PNG






