Explorar el Código

iOS: Avoid generating an OpenGL error (but still fail to create the context) if the specified MSAA sample count is unsupported.

Alex Szpakowski hace 11 años
padre
commit
c344b734f4
Se han modificado 1 ficheros con 12 adiciones y 5 borrados
  1. 12 5
      src/video/uikit/SDL_uikitopenglview.m

+ 12 - 5
src/video/uikit/SDL_uikitopenglview.m

@@ -84,6 +84,18 @@
             return nil;
         }
 
+        if (samples > 0) {
+            GLint maxsamples = 0;
+            glGetIntegerv(GL_MAX_SAMPLES, &maxsamples);
+
+            /* Verify that the sample count is supported before creating any
+             * multisample Renderbuffers, to avoid generating GL errors. */
+            if (samples > maxsamples) {
+                SDL_SetError("Failed creating OpenGL ES framebuffer: Unsupported MSAA sample count");
+                return nil;
+            }
+        }
+
         if (sRGB) {
             /* sRGB EAGL drawable support was added in iOS 7. */
             if (UIKit_IsSystemVersionAtLeast(7.0)) {
@@ -150,11 +162,6 @@
             glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, colorBufferFormat, backingWidth, backingHeight);
 
             glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, msaaRenderbuffer);
-
-            if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-                SDL_SetError("Failed creating OpenGL ES framebuffer: Unsupported MSAA sample count");
-                return nil;
-            }
         }
 
         if (useDepthBuffer || useStencilBuffer) {