我对Pixel Bender没有经验,并且着色语言对我来说看起来像是胡言乱语,所以我想知道是否有人可以帮我重写下面的as3代码来作为Pixel Bender滤镜/着色器。它的工作方式是,我想将16777215种颜色转换为我在调色板阵列中定义的4种色调(最浅的颜色,最暗的颜色)。结果是令人满意的,但表现很差,这就是为什么我要制作一个过滤器。下面的代码:(sbitmap是在我的库中的图像)像素弯曲器4色着色器
var display:Bitmap = new Bitmap(new sbitmap());
var palette:Vector.<uint> = new <uint>[0x485B61, 0x4B8E74, 0xA6E76D, 0xD1FE85];
var data:BitmapData = display.bitmapData;
addChild(display);
const inc:int = int(0xFFFFFF/4)+1;
for(var i:int = 0; i < data.height; i++)
{
for(var j:int = 0; j < data.width; j++)
{
var color:uint = data.getPixel(j, i);
var pIndex:int = 0;
for(var k:int = 0; k < 0xFFFFFF; k += inc)
{
if(color >= k && color < k + inc)
{
data.setPixel(j, i, palette[pIndex]);
break;
}
pIndex++;
}
}
}
感谢您将我的十六进制值转换为rgb,我忘了!我不断收到一个错误:(第15行):'<':语法错误解析错误,第15行是k2被定义的行,奇怪的是错误不会发生在k1上。 –
我得到它的工作。谢谢! :) –