Javascript GLSL片段着色器:采样器2D问题

Javascript GLSL片段着色器:采样器2D问题,javascript,canvas,glsl,webgl,fragment-shader,Javascript,Canvas,Glsl,Webgl,Fragment Shader,我正在尝试使用WebGL创建一个小游戏。在这个游戏中,我想使用GLSL创建多个声纳效果(从一个点向外移动的发光环)。 然而,这些声纳效果中的每一个都应该受到不同面具的影响。此遮罩创建并存储在画布中,并使用链接到片段着色器以便于使用 我在片段着色器中为每个声纳效果及其结构创建了一个对象。但是,当尝试将遮罩画布作为Sampler2D类型添加到它时,着色器脚本将消失,从而产生非描述性错误 这让我想知道Sampler2D:是不能在结构内部使用,还是我做了其他错误的事情 我也尝试过做同样的事情,但这次将采

我正在尝试使用WebGL创建一个小游戏。在这个游戏中,我想使用GLSL创建多个声纳效果(从一个点向外移动的发光环)。 然而,这些声纳效果中的每一个都应该受到不同面具的影响。此遮罩创建并存储在画布中,并使用链接到片段着色器以便于使用

我在片段着色器中为每个声纳效果及其结构创建了一个对象。但是,当尝试将遮罩画布作为Sampler2D类型添加到它时,着色器脚本将消失,从而产生非描述性错误

这让我想知道Sampler2D:是不能在结构内部使用,还是我做了其他错误的事情

我也尝试过做同样的事情,但这次将采样器保持在结构之外,并将它们放入数组中。 但是,片段着色器也不喜欢这样。是否无法使用二维对象的数组

总结如下:

  • 是否可以在结构内部使用Sampler2D对象
  • 是否可以创建二维对象的阵列
  • 如果这两个都不可能:如何以其他方式将遮罩传递给片段着色器
编辑:

我正在使用的结构代码:

struct Sonar{
            float type;//kind of effect, right now only one implemented
            float posx;//xposition of effect
            float posy;//yposition of effect
            float incr;//how far the effect is in its animation
            bool alive;//If the effect should be shown
            float strength;//How strong the effect should be
            sampler2D shadows;//Shadow mask
        };

这似乎是定制的完美场景。你能展示你正在使用的“结构”代码吗?谢谢你的回复@BrettHale:我以前从未听说过LOD。你能告诉我怎么用吗?