Переглянути джерело

Get screenshot as RGBA on OpenGL ES to fix Android black screenshot.

Lasse Öörni 9 роки тому
батько
коміт
a2d86f1a59
1 змінених файлів з 7 додано та 0 видалено
  1. 7 0
      Source/Urho3D/Graphics/OpenGL/OGLGraphics.cpp

+ 7 - 0
Source/Urho3D/Graphics/OpenGL/OGLGraphics.cpp

@@ -599,8 +599,15 @@ bool Graphics::TakeScreenShot(Image& destImage)
 
     ResetRenderTargets();
 
+#ifndef GL_ES_VERSION_2_0
     destImage.SetSize(width_, height_, 3);
     glReadPixels(0, 0, width_, height_, GL_RGB, GL_UNSIGNED_BYTE, destImage.GetData());
+#else
+    // Use RGBA format on OpenGL ES, as otherwise (at least on Android) the produced image is all black
+    destImage.SetSize(width_, height_, 4);
+    glReadPixels(0, 0, width_, height_, GL_RGBA, GL_UNSIGNED_BYTE, destImage.GetData());
+#endif
+
     // On OpenGL we need to flip the image vertically after reading
     destImage.FlipVertical();