如何在webgl中设置SharedArrayBuffer类型的bufferData?

时间:2019-01-07 07:14:09

标签: webgl shader sharedarraybuffer

我尝试将SharedArrayBuffer用作webgl中的bufferData。

MDN document告诉我这是可能的。

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

  

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

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

1 个答案:

答案 0 :(得分:0)

我将“ 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

相关问题