2014-09-19 52 views
2

我想通过结合现有的和Corona模拟器崩溃来创建新的效果。Corona SDK崩溃时试图结合过滤器/效果

这里是我的代码

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

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

我在下面列出了解决方案和更正的语法。

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

+0

谢谢回答。我试过你编写的第二个代码,它可以工作,但形状是红色而不是灰色。 – iBad 2014-09-28 06:29:54

+0

这是打算。尝试将对比度更改为0以无效看到它。 这回答了你为什么崩溃以及如何更改节点过滤器中的对比度参数的问题。为了获得理想的效果,你将不得不在实施中稍微玩一下。现在,您可能会遇到另一个问题,即您的工作目前为止。 – 2014-09-28 08:48:53