小程序
小游戏
企业微信
微信支付
扫描小程序码分享
最近做的一个项目必须用到webgl,但发现官方API中都不支持webgl导出到相册的功能,请问该如何实现?
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
var width; var height; var gl = self.canvas.getContext("webgl", { preserveDrawingBuffer: true }); self.renderer.render(self.scene, self.camera); width = gl.drawingBufferWidth; height = gl.drawingBufferHeight; const pixels = new Uint8Array(width * height * 4); gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); var dataArray = new Uint8ClampedArray(typedArrayToBuffer(pixels)); putImgData(); function putImgData() { wx.canvasPutImageData({ canvasId: "draw", data: dataArray, x: 0, y: 0, width: width, height: height, success: (res) => { wx.canvasToTempFilePath({ x: 0, y: 0, width: width, height: height, destWidth: width, destHeight: width, canvasId: 'draw', success: (res) => { callback(res); }, fail: (res) => { console.log(res); } }, self) }, fail(res) { console.log(res); } }, self); } function typedArrayToBuffer(array) { return array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset) }
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
var width; var height; var gl = self.canvas.getContext("webgl", { preserveDrawingBuffer: true }); self.renderer.render(self.scene, self.camera); width = gl.drawingBufferWidth; height = gl.drawingBufferHeight; const pixels = new Uint8Array(width * height * 4); gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); var dataArray = new Uint8ClampedArray(typedArrayToBuffer(pixels)); putImgData(); function putImgData() { wx.canvasPutImageData({ canvasId: "draw", data: dataArray, x: 0, y: 0, width: width, height: height, success: (res) => { wx.canvasToTempFilePath({ x: 0, y: 0, width: width, height: height, destWidth: width, destHeight: width, canvasId: 'draw', success: (res) => { callback(res); }, fail: (res) => { console.log(res); } }, self) }, fail(res) { console.log(res); } }, self); } function typedArrayToBuffer(array) { return array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset) }