public void addImage(Renderer renderer, FrameBuffer out) { if (freeItems == null) { return; } try { final WorkItem item = freeItems.take(); usedItems.add(item); item.buffer.clear(); renderer.readFrameBufferWithFormat(out, item.buffer, Image.Format.BGRA8); executor.submit(new Callable<Void>() { public Void call() throws Exception { Screenshots.convertScreenShot(item.buffer, item.image); item.data = writer.writeImageToBytes(item.image, quality); while (usedItems.peek() != item) { Thread.sleep(1); } writer.addImage(item.data); usedItems.poll(); freeItems.add(item); return null; } }); } catch (InterruptedException ex) { Logger.getLogger(VideoRecorderAppState.class.getName()).log(Level.SEVERE, null, ex); } }
public void addImage(Renderer renderer, FrameBuffer out) { if (freeItems == null) { return; } try { final WorkItem item = freeItems.take(); usedItems.add(item); item.buffer.clear(); renderer.readFrameBufferWithFormat(out, item.buffer, Image.Format.BGRA8); executor.submit(new Callable<Void>() { public Void call() throws Exception { if (fastMode) { item.data = item.buffer.array(); } else { AndroidScreenshots.convertScreenShot(item.buffer, item.image); item.data = writer.writeImageToBytes(item.image, quality); } while (usedItems.peek() != item) { Thread.sleep(1); } writer.addImage(item.data); usedItems.poll(); freeItems.add(item); return null; } }); } catch (InterruptedException ex) { Logger.getLogger(VideoRecorderAppState.class.getName()).log(Level.SEVERE, null, ex); } }
@Override public void render(final RenderManager renderManager) { if (jobs.isEmpty()) { return; } final SnapshotJob job = jobs.get(0); for (int i = 0; i < 6; i++) { viewports[i].clearScenes(); viewports[i].attachScene(job.scene); renderManager.renderViewPort(viewports[i], 0.16f); buffers[i] = BufferUtils.createByteBuffer(size * size * imageFormat.getBitsPerPixel() / 8); renderManager.getRenderer().readFrameBufferWithFormat(framebuffers[i], buffers[i], imageFormat); images[i] = new Image(imageFormat, size, size, buffers[i], ColorSpace.Linear); MipMapGenerator.generateMipMaps(images[i]); } final TextureCubeMap map = EnvMapUtils.makeCubeMap(images[0], images[1], images[2], images[3], images[4], images[5], imageFormat); debugEnv = map; job.callback.done(map); map.getImage().dispose(); jobs.remove(0); }
public void addImage(Renderer renderer, FrameBuffer out) { if (freeItems == null) { return; } try { final WorkItem item = freeItems.take(); usedItems.add(item); item.buffer.clear(); renderer.readFrameBufferWithFormat(out, item.buffer, Image.Format.BGRA8); executor.submit(new Callable<Void>() { public Void call() throws Exception { Screenshots.convertScreenShot(item.buffer, item.image); item.data = writer.writeImageToBytes(item.image, quality); while (usedItems.peek() != item) { Thread.sleep(1); } writer.addImage(item.data); usedItems.poll(); freeItems.add(item); return null; } }); } catch (InterruptedException ex) { Logger.getLogger(VideoRecorderAppState.class.getName()).log(Level.SEVERE, null, ex); } }
@Override public void render(final RenderManager renderManager) { if (jobs.isEmpty()) { return; } final SnapshotJob job = jobs.get(0); for (int i = 0; i < 6; i++) { viewports[i].clearScenes(); viewports[i].attachScene(job.scene); renderManager.renderViewPort(viewports[i], 0.16f); buffers[i] = BufferUtils.createByteBuffer(size * size * imageFormat.getBitsPerPixel() / 8); renderManager.getRenderer().readFrameBufferWithFormat(framebuffers[i], buffers[i], imageFormat); images[i] = new Image(imageFormat, size, size, buffers[i], ColorSpace.Linear); MipMapGenerator.generateMipMaps(images[i]); } final TextureCubeMap map = EnvMapUtils.makeCubeMap(images[0], images[1], images[2], images[3], images[4], images[5], imageFormat); debugEnv = map; job.callback.done(map); map.getImage().dispose(); jobs.remove(0); }