Javascript 在WebGL着色器中使用UInt8Array数据

Javascript 在WebGL着色器中使用UInt8Array数据,javascript,glsl,webgl,three.js,Javascript,Glsl,Webgl,Three.js,HTML FFT音频分析器将其数据输出为UINT32阵列(64)类型 根据three.js文档,不支持此数据类型: 如何以廉价的方式将每帧FFT缓冲区数据放入顶点着色器 由于不兼容,我无法编译着色器 任何帮助,建议,谢谢 attributes = { customColor: { type: "c", value: [] }, tick: { type: "f", value: 1.0 } };

HTML FFT音频分析器将其数据输出为UINT32阵列(64)类型

根据three.js文档,不支持此数据类型:

如何以廉价的方式将每帧FFT缓冲区数据放入顶点着色器

由于不兼容,我无法编译着色器

任何帮助,建议,谢谢

        attributes = {
            customColor:  { type: "c", value: [] },
            tick:      { type: "f", value: 1.0 }
        };

        uniforms = {
            amplitude: { type: "f", value: 5.0 },
            opacity:   { type: "f", value: 0.3 },
            color:     { type: "c", value: new THREE.Color( 0xff0000 ) },
            fftSize:   { type: "i", value: 63 },
            freqData:  { type: "fv1", value: freqByteData }
        };

...
在render()循环中:

和GLSL v-shader:

        uniform float freqData[64]; // not working, primitive type conflict
        uniform int fftSize;
        uniform float amplitude;

        attribute vec3 customColor;
        attribute int tick;

        varying vec3 vColor;

        void main() {

            vec3 norm = normalize(position);

            vec3 newPosition = position * freqData[tick % fftSize] + amplitude;

            vColor = customColor;

            gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );

        }
我添加了新的统一类型“iv1”,以便能够传入整数数组。你可以试试:


非常感谢您的帮助!我在MacOSX10.7.4(Lion)上的OpenGL版本有各种各样的问题<代码>错误:0:75:“mod”:未找到匹配的重载函数请参见此处:我已尝试将
#版本140
添加到着色器,但它必须显示在着色器的顶部。在哪里可以加上这个?我得到了同样的错误。尝试将mod与同一类型的所有参数一起使用,当前您调用mod(float,int),因此可以使用mod(int,int)或mod(float,float)。
        uniform float freqData[64]; // not working, primitive type conflict
        uniform int fftSize;
        uniform float amplitude;

        attribute vec3 customColor;
        attribute int tick;

        varying vec3 vColor;

        void main() {

            vec3 norm = normalize(position);

            vec3 newPosition = position * freqData[tick % fftSize] + amplitude;

            vColor = customColor;

            gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );

        }