0

これにより、数秒間実行した後に OutOfMemory 例外が発生します。何か案は?

PGraphics img;

void setup() {
  size(500, 500);
  img = createGraphics(width, height, JAVA2D);

  // this is here just for the testcase because else I get a
  // NullPointerException too (probably a harmless Processing bug)
  img.beginDraw(); img.endDraw();
}

void draw() {
  PGraphics tmpImg = createGraphics(img.width, img.height, JAVA2D);
  tmpImg.beginDraw();
  tmpImg.image(img, 0, 0);
  tmpImg.endDraw();
  tmpImg.dispose();
}
4

1 に答える 1

2

その通りです。フレームごとに新しい PGraphics をインスタンス化することは想定されていません。次のようなことが簡単にできます。

PGraphics img;

void setup() {
  size(500, 500);
  img = createGraphics(width, height, JAVA2D);

  // this is here just for the testcase because else I get a
  // NullPointerException too (probably a harmless Processing bug)
  img.beginDraw(); img.endDraw();
}

void draw() {
  image(img, 0, 0);
}

PGraphics は PImage を拡張するためです。通常、基本的な PImage APIを使用しますが、ビットマップまたは偽の「レイヤー」に形状を描画する必要がある場合は、PGraphics を PImage と組み合わせて使用​​できますが、新しい PGraphics を 30 ~ 60 回割り当てないでください。 2番目。

于 2012-05-20T05:56:15.117 に答える