|
@@ -1,39 +1,39 @@
|
|
|
-package eu.tankernn.gameEngine.environmentMap;
|
|
|
-
|
|
|
-import org.lwjgl.opengl.Display;
|
|
|
-import org.lwjgl.opengl.GL11;
|
|
|
-import org.lwjgl.opengl.GL13;
|
|
|
-import org.lwjgl.opengl.GL14;
|
|
|
-import org.lwjgl.opengl.GL30;
|
|
|
-import org.lwjgl.util.vector.Vector3f;
|
|
|
-
|
|
|
-import eu.tankernn.gameEngine.loader.textures.Texture;
|
|
|
-import eu.tankernn.gameEngine.renderEngine.MasterRenderer;
|
|
|
-import eu.tankernn.gameEngine.renderEngine.Scene;
|
|
|
-
|
|
|
-public class EnvironmentMapRenderer {
|
|
|
- public static void renderEnvironmentMap(Texture cubeMap, Scene scene, Vector3f center, MasterRenderer renderer) {
|
|
|
- CubeMapCamera camera = new CubeMapCamera(center);
|
|
|
-
|
|
|
- int fbo = GL30.glGenFramebuffers();
|
|
|
- GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, fbo);
|
|
|
- GL11.glDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);
|
|
|
-
|
|
|
- int depthBuffer = GL30.glGenRenderbuffers();
|
|
|
- GL30.glBindRenderbuffer(GL30.GL_RENDERBUFFER, depthBuffer);
|
|
|
- GL30.glRenderbufferStorage(GL30.GL_RENDERBUFFER, GL14.GL_DEPTH_COMPONENT24, cubeMap.getWidth(), cubeMap.getHeight());
|
|
|
- GL30.glFramebufferRenderbuffer(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL30.GL_RENDERBUFFER, depthBuffer);
|
|
|
- GL11.glViewport(0, 0, cubeMap.size, cubeMap.size);
|
|
|
-
|
|
|
- for (int i = 0; i < 6; i++) {
|
|
|
- GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, cubeMap.textureId, 0);
|
|
|
-
|
|
|
- camera.switchToFace(i);
|
|
|
-
|
|
|
- renderer.renderLowQualityScene(scene, camera);
|
|
|
- }
|
|
|
-
|
|
|
- GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);
|
|
|
- GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight());
|
|
|
- }
|
|
|
-}
|
|
|
+package eu.tankernn.gameEngine.environmentMap;
|
|
|
+
|
|
|
+import org.lwjgl.opengl.Display;
|
|
|
+import org.lwjgl.opengl.GL11;
|
|
|
+import org.lwjgl.opengl.GL13;
|
|
|
+import org.lwjgl.opengl.GL14;
|
|
|
+import org.lwjgl.opengl.GL30;
|
|
|
+import org.lwjgl.util.vector.Vector3f;
|
|
|
+
|
|
|
+import eu.tankernn.gameEngine.loader.textures.Texture;
|
|
|
+import eu.tankernn.gameEngine.renderEngine.MasterRenderer;
|
|
|
+import eu.tankernn.gameEngine.renderEngine.Scene;
|
|
|
+
|
|
|
+public class EnvironmentMapRenderer {
|
|
|
+ public static void renderEnvironmentMap(Texture cubeMap, Scene scene, Vector3f center, MasterRenderer renderer) {
|
|
|
+ CubeMapCamera camera = new CubeMapCamera(center);
|
|
|
+
|
|
|
+ int fbo = GL30.glGenFramebuffers();
|
|
|
+ GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, fbo);
|
|
|
+ GL11.glDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);
|
|
|
+
|
|
|
+ int depthBuffer = GL30.glGenRenderbuffers();
|
|
|
+ GL30.glBindRenderbuffer(GL30.GL_RENDERBUFFER, depthBuffer);
|
|
|
+ GL30.glRenderbufferStorage(GL30.GL_RENDERBUFFER, GL14.GL_DEPTH_COMPONENT24, cubeMap.getWidth(), cubeMap.getHeight());
|
|
|
+ GL30.glFramebufferRenderbuffer(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL30.GL_RENDERBUFFER, depthBuffer);
|
|
|
+ GL11.glViewport(0, 0, cubeMap.getWidth(), cubeMap.getHeight());
|
|
|
+
|
|
|
+ for (int i = 0; i < 6; i++) {
|
|
|
+ GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, cubeMap.textureId, 0);
|
|
|
+
|
|
|
+ camera.switchToFace(i);
|
|
|
+
|
|
|
+ renderer.renderLowQualityScene(scene, camera);
|
|
|
+ }
|
|
|
+
|
|
|
+ GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);
|
|
|
+ GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight());
|
|
|
+ }
|
|
|
+}
|