PGraphics に小さな問題があります。私が取り組んでいるより大きなプロジェクトから抽出された次のコードがあります。
int x=0;
int y=0;
PGraphics array1;
PGraphics array2;
void setup() {
size(200,200);
background(0);
array1 = createGraphics(200,200);
array2 = createGraphics(200,200);
frameRate(10);
}
void draw() {
array1.beginDraw();
array1.background(0);
array1.noStroke();
array1.fill(150);
array1.ellipse(x,y,20,20);
array1.endDraw();
array1.loadPixels();
array2.loadPixels();
//presence of two below lines doesn't change anything
array1.updatePixels();
array2.updatePixels();
//not by arrayCopy since I want to add filters in next project
for(int i=0; i<200*200; i++) {
array2.pixels[i] = array1.pixels[i];
}
//presence of two below lines doesn't change anything
array1.updatePixels();
array2.updatePixels();
//I want to see only the array2 - now it should be the same as array1
// image(array1, 0,0);
image(array2, 0,0);
//presence of two below lines doesn't change anything
array1.updatePixels();
array2.updatePixels();
x++;
y++;
}
一般に、PGraphics array1 を PGraphics array2 にコピーします。ただし、array2 は最初のフレームの array1 のように見え、ビジュアルは更新されません。私が追加したとき:
println(array1.pixels[0]+" "+array2.pixels[0]);
それは印刷します:
...
-6908266 -6908266
-6908266 -6908266
-6908266 -6908266
-16777216 -16777216
-16777216 -16777216
...
したがって、明らかに両方の配列に同じ値が含まれています。更新された array2 が表示されない理由がわかりません。
ドキュメントに従って updatePixels メソッドを別の場所に配置してみましたが、これは役に立ちません。
私は何が欠けていますか?
前もって感謝します!