From 2ea42c3cd2e7313e1970312705bd49b4df162fdd Mon Sep 17 00:00:00 2001 From: squall-leonhart Date: Tue, 20 Nov 2012 04:04:57 +0000 Subject: [PATCH] merge Fix for SDL colours on OSX as indicated by x3ro git-svn-id: https://svn.code.sf.net/p/vbam/code/trunk@1148 a31d4220-a93d-0410-bf67-fe4944624d44 --- src/sdl/SDL.cpp | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/sdl/SDL.cpp b/src/sdl/SDL.cpp index f1e70f9e..932cc680 100644 --- a/src/sdl/SDL.cpp +++ b/src/sdl/SDL.cpp @@ -1162,9 +1162,34 @@ void sdlInitVideo() { exit(-1); } - systemRedShift = sdlCalculateShift(surface->format->Rmask); - systemGreenShift = sdlCalculateShift(surface->format->Gmask); - systemBlueShift = sdlCalculateShift(surface->format->Bmask); + u32 rmask, gmask, bmask; + + if(openGL) { + #if SDL_BYTEORDER == SDL_LIL_ENDIAN /* OpenGL RGBA masks */ + rmask = 0x000000FF; + gmask = 0x0000FF00; + bmask = 0x00FF0000; + #else + rmask = 0xFF000000; + gmask = 0x00FF0000; + bmask = 0x0000FF00; + #endif + } else { + rmask = surface->format->Rmask; + gmask = surface->format->Gmask; + bmask = surface->format->Bmask; + } + + systemRedShift = sdlCalculateShift(rmask); + systemGreenShift = sdlCalculateShift(gmask); + systemBlueShift = sdlCalculateShift(bmask); + + if(openGL) { + // Align to BGRA instead of ABGR + systemRedShift += 8; + systemGreenShift += 8; + systemBlueShift += 8; + } systemColorDepth = surface->format->BitsPerPixel; @@ -2467,7 +2492,7 @@ void systemDrawScreen() GL_RGB, GL_UNSIGNED_SHORT_5_6_5, screen); else glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, destWidth, destHeight, - GL_BGRA, GL_UNSIGNED_BYTE, screen); + GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, screen); glBegin(GL_TRIANGLE_STRIP); glTexCoord2f(0.0f, 0.0f);