[Bf-blender-cvs] [ff96f527fd] blender2.8: Edit Mode overlay: fix clear color, and possibly a crash.

Clément Foucault noreply at git.blender.org
Sun Mar 5 18:06:44 CET 2017


Commit: ff96f527fdb72b73e5f175e84d805f36d921c90d
Author: Clément Foucault
Date:   Sun Mar 5 18:08:55 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBff96f527fdb72b73e5f175e84d805f36d921c90d

Edit Mode overlay: fix clear color, and possibly a crash.

===================================================================

M	source/blender/draw/intern/DRW_render.h
M	source/blender/draw/intern/draw_manager.c
M	source/blender/draw/modes/edit_mesh_mode.c

===================================================================

diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 4c5442cc21..431c747455 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -131,7 +131,7 @@ typedef struct DRWFboTexture {
 
 void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRWFboTexture textures[MAX_FBO_TEX], int texnbr);
 void DRW_framebuffer_bind(struct GPUFrameBuffer *fb);
-void DRW_framebuffer_clear(bool color, bool depth, float clear_col[4]);
+void DRW_framebuffer_clear(bool color, bool depth, float clear_col[4], float clear_depth);
 void DRW_framebuffer_texture_attach(struct GPUFrameBuffer *fb, struct GPUTexture *tex, int slot);
 void DRW_framebuffer_texture_detach(struct GPUTexture *tex);
 void DRW_framebuffer_blit(struct GPUFrameBuffer *fb_read, struct GPUFrameBuffer *fb_write, bool depth);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index ea14c59bc7..3a1406e3de 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1247,14 +1247,15 @@ void DRW_framebuffer_bind(struct GPUFrameBuffer *fb)
 	GPU_framebuffer_bind(fb);
 }
 
-void DRW_framebuffer_clear(bool color, bool depth, float clear_col[4])
+void DRW_framebuffer_clear(bool color, bool depth, float clear_col[4], float clear_depth)
 {
 	if (color) {
 		glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
-		glClearColor(clear_col[0], clear_col[1], clear_col[2], clear_col[4]);
+		glClearColor(clear_col[0], clear_col[1], clear_col[2], clear_col[3]);
 	}
 	if (depth) {
 		glDepthMask(GL_TRUE);
+		glClearDepth(clear_depth);
 	}
 	glClear(((color) ? GL_COLOR_BUFFER_BIT : 0) |
 	        ((depth) ? GL_DEPTH_BUFFER_BIT : 0));
diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c
index d2ef2692cb..3736369f39 100644
--- a/source/blender/draw/modes/edit_mesh_mode.c
+++ b/source/blender/draw/modes/edit_mesh_mode.c
@@ -364,12 +364,17 @@ void EDIT_MESH_draw(void)
 		
 		/* Render wires on a separate framebuffer */
 		DRW_framebuffer_bind(fbl->occlude_wire_fb);
-		DRW_framebuffer_clear(true, true, clearcol);
+		DRW_framebuffer_clear(true, true, clearcol, 1.0f);
 		DRW_draw_pass(psl->edit_face_occluded_pass);
 
+		/* detach textures */
+		DRW_framebuffer_texture_detach(dtxl->depth);
+
 		/* Combine with scene buffer */
 		DRW_framebuffer_bind(dfbl->default_fb);
 		DRW_draw_pass(psl->mix_occlude_pass);
+
+		/* reattach */
 		DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
 	}
 	else {




More information about the Bf-blender-cvs mailing list