瀏覽代碼

changed viewport clearing to use the alpha value of the clear color, and made the transparent bg option of viewport force a clear color of 0,0,0,0

romulox_x 10 年之前
父節點
當前提交
2ac767b1f5
共有 2 個文件被更改,包括 7 次插入2 次删除
  1. 1 1
      drivers/gles2/rasterizer_gles2.cpp
  2. 6 1
      servers/visual/visual_server_raster.cpp

+ 1 - 1
drivers/gles2/rasterizer_gles2.cpp

@@ -4280,7 +4280,7 @@ void RasterizerGLES2::clear_viewport(const Color& p_color) {
 	}
 
 	glEnable(GL_SCISSOR_TEST);
-	glClearColor(p_color.r,p_color.g,p_color.b,1.0);
+	glClearColor(p_color.r,p_color.g,p_color.b,p_color.a);
 	glClear(GL_COLOR_BUFFER_BIT); //should not clear if anything else cleared..
 	glDisable(GL_SCISSOR_TEST);
 };

+ 6 - 1
servers/visual/visual_server_raster.cpp

@@ -6641,7 +6641,12 @@ void VisualServerRaster::_draw_viewport(Viewport *p_viewport,int p_ofs_x, int p_
 
 		//clear the viewport black because of no camera? i seriously should..
 		if (p_viewport->render_target_clear_on_new_frame || p_viewport->render_target_clear) {
-			rasterizer->clear_viewport(clear_color);
+			if (p_viewport->transparent_bg) {
+				rasterizer->clear_viewport(Color(0,0,0,0));
+			}
+			else {
+				rasterizer->clear_viewport(clear_color);
+			}
 			p_viewport->render_target_clear=false;
 		}
 	}