首页 > 解决方案 > 如何为浮点纹理设置数据?

问题描述

我正在尝试将数值数据设置为纹理,我想在 4 字节像素中存储一个未固定的 32 位浮点数,我正在使用 JavaScript 用于 WebGL2,这是我当前的代码:

  const level = 0;
  const internalFormat = gl.RGBA32F;
  const width = 3;
  const height = 2;
  const border = 0;
  const format = gl.RGBA;
  const type = gl.FLOAT;
  const data = new Float32Array([ ... 24 values ...]);
  gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, format, type, data);

我的理解是这个设置应该可以解决问题,但它只有在我在数组中设置 24 个值时才有效,即每个像素的 RGBA 通道分别设置 4 个钳位值。

如果我设置 6 个值,我会收到一个错误“ArrayBufferView not big enough for request”,我该如何让它工作?

标签: webgl

解决方案


推荐阅读