Zoadian преди 11 години
родител
ревизия
53c4313546
променени са 2 файла, в които са добавени 18 реда и са изтрити 3 реда
  1. 3 3
      source/app.d
  2. 15 0
      source/three/renderer.d

+ 3 - 3
source/app.d

@@ -133,10 +133,10 @@ void main() {
 		glCheck!glClearColor(0, 0.3, 0, 1);
 				
 		renderer.renderOneFrame(scene, camera, renderTarget, viewport);
-		
-		TwDraw();
-		
+
 		debug{ renderer.blitGBufferToScreen(); }
+
+		TwDraw();
 		
 		window.swapBuffers();
 		

+ 15 - 0
source/three/renderer.d

@@ -305,6 +305,21 @@ struct Renderer {
 	
 	debug {
 		void blitGBufferToScreen() {
+			glCheck!glBindFramebuffer(GL_READ_FRAMEBUFFER, this.gbuffer.fbo); scope(exit) glCheck!glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); 
+			
+			GLsizei width = this.gbuffer.width;
+			GLsizei height = this.gbuffer.height;
+			
+			scope(exit) glCheck!glReadBuffer(GL_NONE);
+			
+			glCheck!glReadBuffer(GL_COLOR_ATTACHMENT0 + 0);
+			glCheck!glBlitFramebuffer(0, 0, width, height, 0, height-300, 400, height, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+			
+			glCheck!glReadBuffer(GL_COLOR_ATTACHMENT0 + 1);
+			glCheck!glBlitFramebuffer(0, 0, width, height, 0, 0, 400, 300, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+			
+			glCheck!glReadBuffer(GL_COLOR_ATTACHMENT0 + 2);
+			glCheck!glBlitFramebuffer(0, 0, width, height, width-400, height-300, width, height, GL_COLOR_BUFFER_BIT, GL_LINEAR);
 		}
 	}
 }