我尝试在webgl中使用SharedArrayBuffer作为bufferData。
MDN文档告诉我这是可能的。
我只是将"ArrayBuffer"更改为"SharedArrayBuffer"为什么我的代码吐出错误。
[.WebGL-0x7fc1c209b800]GL 错误 :GL_INVALID_OPERATION : glDrawArrays: 尝试访问属性 0 中的超出范围的顶点
[Codepen](https://codepen.io/callin/pen/WLJdpq)
我将"bufferData()"的第二个参数从sharedArraybuffer更改为view。太奇怪了!
原始错误代码
NODE_COUNT = 1
storage = new SharedArrayBuffer( BYTES_PER_NODE * NODE_COUNT )
console.log 'storage', storage.byteLength
position = new Float32Array(storage)
position.set([-.5,.3], 0)
positionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
gl.bufferData(gl.ARRAY_BUFFER, storage, gl.STATIC_DRAW);
错误修复代码
NODE_COUNT = 1
storage = new SharedArrayBuffer( BYTES_PER_NODE * NODE_COUNT )
console.log 'storage', storage.byteLength
position = new Float32Array(storage)
position.set([-.5,.3], 0)
positionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
gl.bufferData(gl.ARRAY_BUFFER, position, gl.STATIC_DRAW); # <-- error fixed