class ImgBuffer{ int saveImageScanline = 0; int scanlineBatch = 16; int saveImageSize = 800; int scanline = 0; PGraphics imgBuffer; //-------------------------------------------- ImgBuffer(int w, int h){ imgBuffer = createGraphics(w,h,P3D); imgBuffer.background(0); } //-------------------------------------------- boolean isFinished(){ return scanline >= imgBuffer.height; } //-------------------------------------------- float getProgress(){ return scanline / (float)imgBuffer.height; } //-------------------------------------------- void partialRender(){ float dx = 1f/(float)imgBuffer.width; float dy = 1f/(float)imgBuffer.height; imgBuffer.loadPixels(); int maxScanline = min(scanlineBatch+saveImageScanline, imgBuffer.height); for( ; scanline= imgBuffer.height ) imgBuffer.save( savePath("output/texture-"+(int)random(100,999)+".png") ); saveImageScanline += scanlineBatch; } }