public void endTransfer() { pgl.deleteSync(fences[tail]); pgl.bindBuffer(PGL.PIXEL_PACK_BUFFER, pbos[tail]); ByteBuffer readBuffer = pgl.mapBuffer(PGL.PIXEL_PACK_BUFFER, PGL.READ_ONLY); if (readBuffer != null) { int format = primaryGraphics ? OPENGL_NATIVE_OPAQUE : OPENGL_NATIVE; PImage target = asyncImageSaver.getAvailableTarget(widths[tail], heights[tail], format); if (target == null) return; readBuffer.rewind(); readBuffer.asIntBuffer().get(target.pixels); pgl.unmapBuffer(PGL.PIXEL_PACK_BUFFER); asyncImageSaver.saveTargetAsync(PGraphicsOpenGL.this, target, files[tail]); } pgl.bindBuffer(PGL.PIXEL_PACK_BUFFER, 0); size--; tail = (tail + 1) % BUFFER_COUNT; }
public void endTransfer() { pgl.deleteSync(fences[tail]); pgl.bindBuffer(PGL.PIXEL_PACK_BUFFER, pbos[tail]); ByteBuffer readBuffer = pgl.mapBuffer(PGL.PIXEL_PACK_BUFFER, PGL.READ_ONLY); if (readBuffer != null) { int format = primaryGraphics ? OPENGL_NATIVE_OPAQUE : OPENGL_NATIVE; PImage target = asyncImageSaver.getAvailableTarget(widths[tail], heights[tail], format); if (target == null) return; readBuffer.rewind(); readBuffer.asIntBuffer().get(target.pixels); pgl.unmapBuffer(PGL.PIXEL_PACK_BUFFER); asyncImageSaver.saveTargetAsync(PGraphicsOpenGL.this, target, filenames[tail]); } pgl.bindBuffer(PGL.PIXEL_PACK_BUFFER, 0); size--; tail = (tail + 1) % BUFFER_COUNT; }
@Override public boolean save(String filename) { // ignore if (hints[DISABLE_ASYNC_SAVEFRAME]) { return super.save(filename); } if (asyncImageSaver == null) { asyncImageSaver = new AsyncImageSaver(); } if (!loaded) loadPixels(); PImage target = asyncImageSaver.getAvailableTarget(pixelWidth, pixelHeight, format); if (target == null) return false; int count = PApplet.min(pixels.length, target.pixels.length); System.arraycopy(pixels, 0, target.pixels, 0, count); asyncImageSaver.saveTargetAsync(this, target, filename); return true; }
int count = PApplet.min(pixels.length, target.pixels.length); System.arraycopy(pixels, 0, target.pixels, 0, count); asyncImageSaver.saveTargetAsync(this, target, parent.sketchFile(filename));
@Override public boolean save(String filename) { // ignore if (hints[DISABLE_ASYNC_SAVEFRAME]) { return super.save(filename); } if (asyncImageSaver == null) { asyncImageSaver = new AsyncImageSaver(); } if (!loaded) loadPixels(); PImage target = asyncImageSaver.getAvailableTarget(pixelWidth, pixelHeight, format); if (target == null) return false; int count = PApplet.min(pixels.length, target.pixels.length); System.arraycopy(pixels, 0, target.pixels, 0, count); asyncImageSaver.saveTargetAsync(this, target, parent.sketchFile(filename)); return true; }