0

我尝试在 webgl 中使用 SharedArrayBuffer 作为 bufferData。

MDN文档告诉我,可以的。

我只是将“ArrayBuffer”更改为“SharedArrayBuffer”,为什么我的代码会吐出错误。

[.WebGL-0x7fc1c209b800]GL 错误:GL_INVALID_OPERATION:glDrawArrays:尝试访问属性 0 中超出范围的顶点

[Codepen](https://codepen.io/callin/pen/WLJdpq)
4

1 回答 1

1

我将“bufferData()”的第二个参数从 sharedArraybuffer 更改为查看。有点奇怪!

原始错误代码

        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

于 2019-01-07T07:36:01.420 回答