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

我正在尝试通过组合现有效果来创建新效果,但 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";

还有关于 filter 参数的问题。在这个示例中,我如何指定 filter contrast 的参数?

谢谢

点赞
用户2260604
用户2260604

最近我也遇到了这个问题。我发现通过在一个节点表中声明影响的图形定义可以解决这个问题。

我在下面的代码中包含了解决方案并进行了语法纠正。

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

一个好的入门教程是Bryan Smith撰写的Graphics 2.0的多通道着色器教程

2014-09-27 16:57:12