尝试组合过滤器/效果时,Corona SDK崩溃

时间:2014-09-19 16:00:28

标签: lua corona

我试图通过结合现有的和Corona Simulator崩溃来创造新的效果。

这是我的代码

graphics.defineEffect({
    language = "glsl",
    category = "filter",
    name = "myEffect",
    graph = {
        gray = { effect = "filter.grayscale", input1 = "paint1" },
        --final = { effect = "filter.contrast", input1 = "gray" },
    },
    output = "gray"
});

local rect = display.newRect(100, 100, 100, 100);
rect:setFillColor(1, 0, 0);
rect.fill.effect = "filter.myEffect";

还有关于过滤器参数的问题。如何在此示例中指定滤镜对比度的参数?

谢谢

1 个答案:

答案 0 :(得分:1)

这最近给我带来了麻烦。我发现它可以通过在节点表中声明效果的图形定义来解决。

我在下面提供了解决方案并更正了语法。

graphics.defineEffect({
    language = "glsl",
    category = "filter",
    name = "myEffect",
    graph = {
      nodes = {
         gray = { effect = "filter.grayscale", input1 = "paint1" }
         --final = { effect = "filter.contrast", input1 = "gray" },
      },
       output = "gray"
    }
})

local rect = display.newRect(100, 100, 100, 100);
rect:setFillColor(1, 0, 0);
rect.fill.effect = "filter.myEffect";

关于对比问题,请原谅我,如果我误解了,但这应该是一个可行的解决方案

graphics.defineEffect({
    language = "glsl",
    category = "filter",
    name = "myEffect",
    graph = {
      nodes = {
         gray = { effect = "filter.grayscale", input1 = "paint1" },
         final = { effect = "filter.contrast", input1 = "gray" }
      },
       output = "final"
    }
})

local rect = display.newRect(100, 100, 100, 100);
rect:setFillColor(1, 0, 0);
rect.fill.effect = "filter.myEffect";
rect.fill.effect.final.contrast = 2

对此的一个很好的介绍是Tutorial: Multi-Pass Shaders in Graphics 2.0 by Bryan Smith