【问题标题】:GLSL know uniform array lengthGLSL 知道统一的数组长度
【发布时间】:2021-10-21 20:08:32
【问题描述】:

基本上,我的着色器中有一个统一的 vec2 数组,它在 JS 应用程序中获取它的值。 我需要知道这个数组的长度才能采取相应的行动。 我试过array.length(),这给了我这个错误:

ERROR: 0:48: '' : 仅在 GLSL ES 3.00 及更高版本中支持的方法

【问题讨论】:

  • 它是vec2 实例的数组吗?因为vec2 本身的长度总是 2

标签: javascript glsl vertex-shader vertex


【解决方案1】:

在 JS 端,您可以使用getActiveUniform 接收WebGLActiveInfo 作为每个制服的结果。每个都有一个size 字段。根据参考页面:

返回值的 size 属性对应于声明为数组的制服的数组长度。否则为 1(这包括使用数组实例化的接口块)。

类似这样的:

const max_uniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
for (let i = 0; i < max_uniforms; i++) 
{
  const uniform_info = gl.getActiveUniform(program, i);
  console.log("uniform " + uniform_info.name + " length is " + uniform_info.size);
}

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2021-11-05
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多