浏览代码

Fixed handling framebuffer_srgb_capable for EGL and iOS

Sam Lantinga 4 周之前
父节点
当前提交
a4c269cd10
共有 3 个文件被更改,包括 6 次插入6 次删除
  1. 3 3
      src/video/SDL_egl.c
  2. 1 1
      src/video/uikit/SDL_uikitopenglview.h
  3. 2 2
      src/video/uikit/SDL_uikitopenglview.m

+ 3 - 3
src/video/SDL_egl.c

@@ -1268,14 +1268,14 @@ EGLSurface SDL_EGL_CreateSurface(SDL_VideoDevice *_this, SDL_Window *window, Nat
     ANativeWindow_setBuffersGeometry(nw, 0, 0, format_wanted);
 #endif
 
-    if (_this->gl_config.framebuffer_srgb_capable) {
+    if (_this->gl_config.framebuffer_srgb_capable >= 0) {
 #ifdef EGL_KHR_gl_colorspace
         if (SDL_EGL_HasExtension(_this, SDL_EGL_DISPLAY_EXTENSION, "EGL_KHR_gl_colorspace")) {
             attribs[attr++] = EGL_GL_COLORSPACE_KHR;
-            attribs[attr++] = EGL_GL_COLORSPACE_SRGB_KHR;
+            attribs[attr++] = _this->gl_config.framebuffer_srgb_capable ? EGL_GL_COLORSPACE_SRGB_KHR : EGL_GL_COLORSPACE_LINEAR_KHR;
         } else
 #endif
-        {
+        if (_this->gl_config.framebuffer_srgb_capable > 0) {
             SDL_SetError("EGL implementation does not support sRGB system framebuffers");
             return EGL_NO_SURFACE;
         }

+ 1 - 1
src/video/uikit/SDL_uikitopenglview.h

@@ -39,7 +39,7 @@
                         aBits:(int)aBits
                     depthBits:(int)depthBits
                   stencilBits:(int)stencilBits
-                         sRGB:(BOOL)sRGB
+                         sRGB:(int)sRGB
                  multisamples:(int)multisamples
                       context:(EAGLContext *)glcontext;
 

+ 2 - 2
src/video/uikit/SDL_uikitopenglview.m

@@ -67,7 +67,7 @@
                         aBits:(int)aBits
                     depthBits:(int)depthBits
                   stencilBits:(int)stencilBits
-                         sRGB:(BOOL)sRGB
+                         sRGB:(int)sRGB
                  multisamples:(int)multisamples
                       context:(EAGLContext *)glcontext
 {
@@ -93,7 +93,7 @@
             samples = SDL_min(samples, maxsamples);
         }
 
-        if (sRGB) {
+        if (sRGB > 0) {
             colorFormat = kEAGLColorFormatSRGBA8;
             colorBufferFormat = GL_SRGB8_ALPHA8;
         } else if (rBits >= 8 || gBits >= 8 || bBits >= 8 || aBits > 0) {