GLSL片段着色器:Sampler2D问题

时间:2013-10-11 15:21:35

标签: javascript canvas glsl webgl fragment-shader

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

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

这让我对Sampler2D感到好奇:是不是在结构体内使用它还是我做错了什么?

我也尝试过做同样的事情,但这次将采样器保持在结构体之外并将它们放入数组中。 但是,片段着色器也不喜欢这样。是否无法使用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
        };

0 个答案:

没有答案