2015-10-17 55 views
0

我正在使用Phaser框架。這裏是的jsfiddle:如何將Phaser着色器隔離到特定對象/形狀?

http://jsfiddle.net/Dillybob/u3mGL/13/

這裏就是過濾器是越來越填充:

background = game.add.sprite(0, 0); 
background.width = 800; 
background.height = 600; 
filter = game.add.filter('Fire', 800, 600); 
filter.alpha = 0.0; 
background.filters = [filter]; 

我的線對象賦給變量drawnObject

所以我分配一個對象,以接收像這樣的過濾器:

drawnObject.filters = [filter];

但是我的線現在是一個紅色的火熱的廣場,而不是一個火熱的背景線,爲什麼?

回答

2

首先,請注意drawnObject實際上是一個矩形的位圖。它由構建線條的白色像素和透明像素組成,這些像素佔據了位圖空間的其餘部分。

您使用的濾鏡是像素着色器。像素着色器描述GPU爲提供的位圖的每個像素調用的指令。在這種着色器的情況下,它創建基於一些雜點功能火作用,但它沒有考慮原始位考慮。像素的原始顏色不會保留,它不會以任何方式添加到最終效果中。

實現你預期的結果,你必須修改fragmentSrc在Fire.js,讓着色器使用和混合/混合原來的顏色爲最終的像素顏色和/或不改變像素的透明度。