我想将像素[]中的褪色像素复制到f.pixels [](我的PGraphics对象),然后将f图像重新绘制到显示器上。在draw()中反复这样做是为了将白色矩形淡化为黑色以匹配背景,但它并没有一直消失。
它稍微平滑地褪色,但随后它会以某种灰色停止褪色。 fade_amount越低,它最终消失的越少。
如何让白色方块一直淡入黑色?为什么不用这段代码呢?
谢谢!
P.S。我在那里有Pgraphics f对象,因为我想在这个项目的后期有一个屏幕外绘图缓冲区,所以我可以创建一个反馈循环,包括在复制过程中进行转换,以便像将电视上显示的相机指向电视时那样。
此外,这是在处理1.5.1中编写的,它是在我的计算机上运行的最新版本。
PGraphics f;
int win_size = 1000;
void setup(){
size(win_size, win_size);
f = createGraphics(width, height, P2D);
background(0,0,0);
stroke(255,255);
rect((win_size/2) -40, (win_size/2) -40, 80, 80);
}
void draw(){
fade_and_copy_pixels(f); //fades window pixels and then copies pixels to f
background(0,0,0);
image(f,0,0);
}
void fade_and_copy_pixels(PGraphics f){
loadPixels(); //load windows pixels
f.loadPixels(); //loads 2nd layer pixels
// Loop through every pixel in window
for (int i = 0; i < pixels.length; i++) {
color p = pixels[i];
// get alpha value
int a = (p >> 24) & 0xFF ;
// reduce alpha value
int fade_amount = 5;//at 2 it fades about half way to black, the higher the fadeamount the more it fades. weird
a = max(0, a-fade_amount);
// assign color with new alpha-value
p = (a<<24 | p & 0xFFFFFF) ;
f.pixels[i] = p;
}
updatePixels(); //dont need because I am not wanting to directly edit pixels[]
f.updatePixels();
}