Javascript WebGL2中的统一缓冲区问题

Javascript WebGL2中的统一缓冲区问题,javascript,webgl,webgl2,Javascript,Webgl,Webgl2,我正在尝试将一些OpenGL代码移植到WebGL2,但我在统一缓冲区方面遇到了一些问题。使用缓冲区附加到的着色器渲染的所有内容将不再显示。我在控制台中没有收到错误或警告。这是我的代码: var data = new Float32Array(1); data[0] = 1.0; var uniformBuffer = gl.createBuffer(); gl.bindBuffer(gl.UNIFORM_BUFFER, uniformBuffer); gl.bufferData(gl.UNIF

我正在尝试将一些OpenGL代码移植到WebGL2,但我在统一缓冲区方面遇到了一些问题。使用缓冲区附加到的着色器渲染的所有内容将不再显示。我在控制台中没有收到错误或警告。这是我的代码:

var data = new Float32Array(1);
data[0] = 1.0;

var uniformBuffer = gl.createBuffer();
gl.bindBuffer(gl.UNIFORM_BUFFER, uniformBuffer);
gl.bufferData(gl.UNIFORM_BUFFER, 4, gl.STATIC_DRAW);
gl.bindBufferRange(gl.UNIFORM_BUFFER, 0, uniformBuffer, 0, 4);

gl.uniformBlockBinding(mapShader.getProgram(), gl.getUniformBlockIndex(mapShader.getProgram(), "test"), 0);


gl.bindBuffer(gl.UNIFORM_BUFFER, uniformBuffer);
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, data);
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
一旦我将其添加到着色器中,我前面描述的问题就会出现:

layout (std140) uniform test {
    float testFloat;
};

下一次,请善待我们,避免我们不得不手动进行回购!谢谢下次请善待我们,避免我们不得不手动回购!感谢这项工作,我对它进行了一点测试,每增加一个浮点数,就会增加4个,对吗?浮点数被填充到vec4中,所以1个浮点数是16字节,2个浮点数是16字节,4个是16字节,5个是32字节。等规则在答案中链接的规范中有详细说明。感谢这一点,我对它进行了一点测试,每增加一个浮点值,就会在右边的大小上增加4个?浮点值被填充到一个vec4,因此1个浮点值是16字节,2个浮点值是16字节,4个是16字节,5个是32字节。等答案中链接的规范中详细说明了这些规则。