|
@@ -172,28 +172,30 @@ public class EnvironmentCamera extends BaseAppState {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void render(final RenderManager renderManager) {
|
|
public void render(final RenderManager renderManager) {
|
|
|
|
+ if (isBusy()) {
|
|
|
|
+ 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]);
|
|
|
|
+ }
|
|
|
|
|
|
- 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);
|
|
|
|
|
|
+ final TextureCubeMap map = EnvMapUtils.makeCubeMap(images[0],
|
|
|
|
+ images[1], images[2], images[3], images[4], images[5],
|
|
|
|
+ imageFormat);
|
|
debugEnv = map;
|
|
debugEnv = map;
|
|
- job.callback.done(map);
|
|
|
|
- map.getImage().dispose();
|
|
|
|
- jobs.remove(0);
|
|
|
|
|
|
+ job.callback.done(map);
|
|
|
|
+ map.getImage().dispose();
|
|
|
|
+ jobs.remove(0);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -276,6 +278,17 @@ public class EnvironmentCamera extends BaseAppState {
|
|
return viewports;
|
|
return viewports;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Test whether this EnvironmentCamera is busy. Avoid reconfiguring while
|
|
|
|
+ * busy!
|
|
|
|
+ *
|
|
|
|
+ * @return true if busy, otherwise false
|
|
|
|
+ */
|
|
|
|
+ public boolean isBusy() {
|
|
|
|
+ boolean result = !jobs.isEmpty();
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
protected void initialize(Application app) {
|
|
protected void initialize(Application app) {
|
|
this.backGroundColor = app.getViewPort().getBackgroundColor().clone();
|
|
this.backGroundColor = app.getViewPort().getBackgroundColor().clone();
|