Quellcode durchsuchen

Prevent invalid stencil buffer contents from being used when switching to a Canvas on mobile.

--HG--
branch : minor
Alex Szpakowski vor 10 Jahren
Ursprung
Commit
a66a7b7ce9
1 geänderte Dateien mit 5 neuen und 0 gelöschten Zeilen
  1. 5 0
      src/modules/graphics/opengl/Canvas.cpp

+ 5 - 0
src/modules/graphics/opengl/Canvas.cpp

@@ -768,6 +768,11 @@ void Canvas::setupGrab()
 
 
 	if (msaa_buffer != 0)
 	if (msaa_buffer != 0)
 		msaa_dirty = true;
 		msaa_dirty = true;
+
+	// We discard the stencil buffer in stopGrab, so we should clear it here
+	// to prevent the discarded (invalid) contents from being accidentally used.
+	if (depth_stencil != 0 && (GLAD_ES_VERSION_3_0 || GLAD_EXT_discard_framebuffer))
+		glClear(GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 }
 }
 
 
 void Canvas::startGrab(const std::vector<Canvas *> &canvases)
 void Canvas::startGrab(const std::vector<Canvas *> &canvases)