カバーフローアニメーションで画像(png、サイズ100kbから1.5mb、合計55.4mb)を表示することになっているスケッチを実行しようとしています。約10枚の画像で動作しますが、それ以上使用するとメモリ不足エラーが発生します。私は次のように画像ファイル名を文字列配列にロードしています:
String[] names = {"00.jpg", "01.jpg", "02.jpg"};
次に、次のようにスケッチに読み込まれます。
covers = new Cover[names.length];
for (int i = 0; i < covers.length; i++ ) {
covers[i] = new Cover(names[i]);
}
initCovers();
クラスをカバーします:
class Cover {
PImage img;
Cover( String name ) {
img = loadImage(name);
public void drawCover() {
beginShape();
textureMode(NORMALIZED);
texture(img);
vertex(-300, -300, 0, 0, 0);
vertex( 300, -300, 0, 1, 0);
vertex( 300, 300, 0, 1, 1);
vertex(-300, 300, 0, 0, 1);
endShape();
スケッチを実行すると、RAM(8GB)が数秒以内にいっぱいになり、スケッチが読み込まれず、クラッシュするだけです。約10枚の画像でスケッチを開始すると、すべてが正常に機能します(RAMの使用量は約1.5GB)。
私の質問は、なぜこれほど多くのメモリを使用しているのかということです。正常ですか?メモリ効率を高める方法はありますか(たとえば、画面に一度に表示できる画像は約3つしかないため、現在表示されていない画像のメモリを解放します)。
編集:問題は、カバークラスで、呼び出されるたびに新しいPImageが作成されることだと思います。それは可能でしょうか?
メモリ内の画像サイズ:幅*高さ*(色深度/ 8)なので、私の画像(1575y1969、24ビット)の場合、8.9mbになります。91枚の画像の倍数:画像だけで約807MBのメモリ使用量。