小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 当前 Bug 的表现(可附上截图)
代码很简单
let offscreenCanvas = wx.createOffscreenCanvas()
offscreenCanvasCtx = offscreenCanvas.getContext("webgl")
if (offscreenCanvasCtx != null) {
console.log(offscreenCanvasCtx)
}
iOS上的输出:
微信ide中的输出:
- 预期表现
应该和IDE中一致才对
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
真机实现上没有配置输出方法列表,实际上方法是存在的。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我这边简单的用Web GL做了一些计算的操作
在IDE里实现了一些图像检测
也就是从Camera拿数据塞给WebGL的方法
在IDE里是正常的(IDE里如下图),
然而在手机端 ,没有任何的输出
代码片段发来看看?
let offscreenCanvas, offscreenCanvasCtx
Canvas2d.ctx = wx.createCanvasContext(
'canvas2d'
)
CameraInfo.camCtx.onCameraFrame((frame) => {
if
(CameraInfo.isInited ==
false
){
CameraInfo.width = frame.width
CameraInfo.height = frame.height
CameraInfo.isInited =
true
offscreenCanvas = wx.createOffscreenCanvas()
offscreenCanvasCtx = offscreenCanvas.getContext(
"webgl"
, { preserveDrawingBuffer:
})
offscreenCanvasCtx.clearColor(1.0, 0.0, 0.0, 1.0);
offscreenCanvasCtx.clear(offscreenCanvasCtx.COLOR_BUFFER_BIT);
let pixelsData =
new
Uint8Array(CameraInfo.width * CameraInfo.height * 4)
offscreenCanvasCtx.readPixels(0, 0, CameraInfo.width, CameraInfo.height, offscreenCanvasCtx.RGBA, offscreenCanvasCtx.UNSIGNED_BYTE, pixelsData)
let verArr = []
for
(let j = 0; j < CameraInfo.width; j++) {
(let i = 0; i < CameraInfo.height; i++) {
(pixelsData[(j * CameraInfo.width + i) * 4] != 0) {
verArr.push({ x: i, y: j })
drawPoints(Canvas2d.ctx, verArr, 4)
function
drawPoints(ctx, verArr, r) {
(verArr.length == 0)
return
ctx.setFillStyle(
'red'
let len = Math.min(100, verArr.length)
(let i = 0; i < len; i++) {
ctx.fillRect(verArr[i].x, verArr[i].y, r, r)
ctx.draw()
简化了一下
预期应该同IDE中一致
当前自己判断是
offscreenCanvasCtx = offscreenCanvas.getContext("webgl", { preserveDrawingBuffer:true })
这个地方的问题
{ preserveDrawingBuffer:true }
{ preserveDrawingBuffer:
你的代码片段没有看到在读取相机帧数据,相机帧数据在 frame.data 这个字段下,是一个 ArrayBuffer
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
真机实现上没有配置输出方法列表,实际上方法是存在的。
我这边简单的用Web GL做了一些计算的操作
在IDE里实现了一些图像检测
也就是从Camera拿数据塞给WebGL的方法
在IDE里是正常的(IDE里如下图),
然而在手机端 ,没有任何的输出
代码片段发来看看?
let offscreenCanvas, offscreenCanvasCtx
Canvas2d.ctx = wx.createCanvasContext(
'canvas2d'
)
CameraInfo.camCtx.onCameraFrame((frame) => {
if
(CameraInfo.isInited ==
false
){
CameraInfo.width = frame.width
CameraInfo.height = frame.height
CameraInfo.isInited =
true
offscreenCanvas = wx.createOffscreenCanvas()
offscreenCanvasCtx = offscreenCanvas.getContext(
"webgl"
, { preserveDrawingBuffer:
true
})
}
offscreenCanvasCtx.clearColor(1.0, 0.0, 0.0, 1.0);
offscreenCanvasCtx.clear(offscreenCanvasCtx.COLOR_BUFFER_BIT);
let pixelsData =
new
Uint8Array(CameraInfo.width * CameraInfo.height * 4)
offscreenCanvasCtx.readPixels(0, 0, CameraInfo.width, CameraInfo.height, offscreenCanvasCtx.RGBA, offscreenCanvasCtx.UNSIGNED_BYTE, pixelsData)
let verArr = []
for
(let j = 0; j < CameraInfo.width; j++) {
for
(let i = 0; i < CameraInfo.height; i++) {
if
(pixelsData[(j * CameraInfo.width + i) * 4] != 0) {
verArr.push({ x: i, y: j })
}
}
}
drawPoints(Canvas2d.ctx, verArr, 4)
}
function
drawPoints(ctx, verArr, r) {
if
(verArr.length == 0)
return
ctx.setFillStyle(
'red'
)
let len = Math.min(100, verArr.length)
for
(let i = 0; i < len; i++) {
ctx.fillRect(verArr[i].x, verArr[i].y, r, r)
}
ctx.draw()
}
简化了一下
预期应该同IDE中一致
当前自己判断是
offscreenCanvasCtx = offscreenCanvas.getContext(
"webgl"
, { preserveDrawingBuffer:
true
})
这个地方的问题
{ preserveDrawingBuffer:
true
}
你的代码片段没有看到在读取相机帧数据,相机帧数据在 frame.data 这个字段下,是一个 ArrayBuffer