【问题标题】:how to set SharedArrayBuffer type bufferData in webgl?如何在 webgl 中设置 SharedArrayBuffer 类型的 bufferData?
【发布时间】:2019-01-07 07:14:08
【问题描述】:

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

MDN document 告诉我这是可能的。

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

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

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

【问题讨论】:

    标签: webgl shader sharedarraybuffer


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 2012-05-03
      相关资源
      最近更新 更多