910e62b5创建于 1月15日历史提交
<!DOCTYPE html>
<html>

<head>
  <title>
    Test CPU performance of the WebGLRenderingContext.bufferSubData binding
  </title>
  <script src="../resources/runner.js"></script>
  <script src="./resources/webgl-perf-utils.js"></script>
</head>

<body>
  <canvas id="canvas" width=400 height=400></canvas>
  <script>
    (() => {
      const canvas = document.getElementById('canvas');
      const gl = canvas.getContext('webgl');
      if (!gl) {
        skipTest('WebGL not supported');
        return;
      }

      const vertexBuffer = gl.createBuffer();

      const data = new Float32Array([
        0.0, 0.5, 0.0,
        -0.5, -0.5, 0.0,
        0.5, -0.5, 0.0,
      ]);
      const dataCopy = new Float32Array([
        0.0, 0.5, 0.0,
        -0.5, -0.5, 0.0,
        0.5, -0.5, 0.0,
      ]);
      const sizeInBytes = data.length * data.BYTES_PER_ELEMENT;

      gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
      // Ensure twice the size of `data`.
      gl.bufferData(gl.ARRAY_BUFFER, sizeInBytes * 2, gl.STATIC_DRAW);

      const iterations = 10000;
      PerfTestRunner.measureInnerRAFTime({
        description: `CPU time for ${iterations * 2} calls to WebGLRenderingContext.bufferSubData`,
        warmUpCount: 10,
        run() {
          for (let i = 0; i < iterations; ++i) {
            gl.bufferSubData(gl.ARRAY_BUFFER, 0, data);
            gl.bufferSubData(gl.ARRAY_BUFFER, sizeInBytes, dataCopy);
          }
        }
      });
    })();
  </script>
</body>

</html>