···250250static void FreeFormat(SDL_PixelFormat* format);
251251252252// To make these public, I need to move them into the renderer. But should they be?
253253-static float* GPU_GetModelView(void)
253253+/*static float* GPU_GetModelView(void)
254254{
255255 #ifdef SDL_GPU_USE_INTERNAL_MATRICES
256256 return _GPU_GetModelView();
···270270 glGetFloatv(GL_PROJECTION_MATRIX, A);
271271 return A;
272272 #endif
273273-}
273273+}*/
274274275275276276static Uint8 isExtensionSupported(const char* extension_str)
···298298#endif
299299}
300300301301-static Uint8 checkExtension(const char* str)
302302-{
303303- if(!isExtensionSupported(str))
304304- {
305305- GPU_LogError("GL error: %s is not supported.\n", str);
306306- return 0;
307307- }
308308- return 1;
309309-}
310310-311301static void init_features(GPU_Renderer* renderer)
312302{
313303 // NPOT textures
···539529 {
540530 renderer->FlushBlitBuffer(renderer);
541531 cdata->last_color = color;
542542- glColor4f(color.r/255.01f, color.g/255.01f, color.b/255.01f, color.a/255.01f);
532532+ glColor4f(color.r/255.01f, color.g/255.01f, color.b/255.01f, GET_ALPHA(color)/255.01f);
543533 }
544534 #endif
545535}
···747737 SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
748738 SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
749739 SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
740740+741741+ renderer->requested_id = renderer_request;
750742751743#ifdef SDL_GPU_USE_SDL2
752744···797789 return NULL;
798790 #endif
799791800800- // Update our renderer info from the current GL context.
801801- #ifdef GL_MAJOR_VERSION
802802- glGetIntegerv(GL_MAJOR_VERSION, &renderer->id.major_version);
803803- glGetIntegerv(GL_MINOR_VERSION, &renderer->id.minor_version);
804804- #else
805805- // GLES doesn't have GL_MAJOR_VERSION. Check via version string instead.
806806- const char* version_string = (const char*)glGetString(GL_VERSION);
807807- // OpenGL ES 2.0?
808808- if(sscanf(version_string, "OpenGL ES %d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0)
809809- {
810810- // OpenGL ES-CM 1.1? OpenGL ES-CL 1.1?
811811- if(sscanf(version_string, "OpenGL ES-C%*c %d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0)
812812- {
813813- renderer->id.major_version = SDL_GPU_GLES_MAJOR_VERSION;
814814- #if SDL_GPU_GLES_MAJOR_VERSION == 1
815815- renderer->id.minor_version = 1;
816816- #else
817817- renderer->id.minor_version = 0;
818818- #endif
819819-820820- GPU_LogError("Failed to parse OpenGLES version string: %s\n Defaulting to version %d.%d.\n", version_string, renderer->id.major_version, renderer->id.minor_version);
821821- }
822822- }
823823- #endif
824824-825825- // Did the wrong runtime library try to use a later versioned renderer?
826826- if(renderer->id.major_version < renderer_request.major_version)
827827- {
828828- GPU_LogError("GPU_Init failed: Renderer %s can not be run by the version %d.%d library that is linked.\n", GPU_GetRendererEnumString(renderer_request.id), renderer->id.major_version, renderer->id.minor_version);
829829- return NULL;
830830- }
831831-832792 return renderer->current_context_target;
833793}
834794···960920 return NULL;
961921 }
962922 #endif
923923+924924+925925+ // Update our renderer info from the current GL context.
926926+ #ifdef GL_MAJOR_VERSION
927927+ glGetIntegerv(GL_MAJOR_VERSION, &renderer->id.major_version);
928928+ glGetIntegerv(GL_MINOR_VERSION, &renderer->id.minor_version);
929929+ #else
930930+ // GLES doesn't have GL_MAJOR_VERSION. Check via version string instead.
931931+ const char* version_string = (const char*)glGetString(GL_VERSION);
932932+ // OpenGL ES 2.0?
933933+ if(sscanf(version_string, "OpenGL ES %d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0)
934934+ {
935935+ // OpenGL ES-CM 1.1? OpenGL ES-CL 1.1?
936936+ if(sscanf(version_string, "OpenGL ES-C%*c %d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0)
937937+ {
938938+ renderer->id.major_version = SDL_GPU_GLES_MAJOR_VERSION;
939939+ #if SDL_GPU_GLES_MAJOR_VERSION == 1
940940+ renderer->id.minor_version = 1;
941941+ #else
942942+ renderer->id.minor_version = 0;
943943+ #endif
944944+945945+ GPU_LogError("Failed to parse OpenGLES version string: %s\n Defaulting to version %d.%d.\n", version_string, renderer->id.major_version, renderer->id.minor_version);
946946+ }
947947+ }
948948+ #endif
949949+950950+ // Did the wrong runtime library try to use a later versioned renderer?
951951+ if(renderer->id.major_version < renderer->requested_id.major_version)
952952+ {
953953+ #ifdef SDL_GPU_USE_GLES
954954+ GPU_LogError("GPU_Init failed: Renderer %s can not be run by the version %d.%d library that is linked.\n", GPU_GetRendererEnumString(renderer->requested_id.id), renderer->id.major_version, renderer->id.minor_version);
955955+ #endif
956956+ return NULL;
957957+ }
963958964959 init_features(renderer);
965960···11251120 if(screen == NULL)
11261121 return 0;
1127112211281128- renderer->current_context_target->window_w = screen->w;
11291129- renderer->current_context_target->window_h = screen->h;
11231123+ renderer->current_context_target->context->window_w = screen->w;
11241124+ renderer->current_context_target->context->window_h = screen->h;
11301125#endif
1131112611321127 Uint16 virtualW = renderer->current_context_target->w;
···32533248 result.r = pixels[0];
32543249 result.g = pixels[1];
32553250 result.b = pixels[2];
32563256-#ifdef SDL_GPU_USE_SDL2
32573257- result.a = pixels[3];
32583258-#else
32593259- result.unused = pixels[3];
32603260-#endif
32513251+ GET_ALPHA(result) = pixels[3];
32613252 }
3262325332633254 return result;
+2-1
SDL_gpu/SDL_gpu.h
···268268{
269269 /*! Struct identifier of the renderer. */
270270 GPU_RendererID id;
271271+ GPU_RendererID requested_id;
271272272273 int tier;
273274 GPU_FeatureEnum enabled_features;
···598599// Renderer controls
599600600601/*! Returns the default GPU_RendererID for the current platform. */
601601-GPU_RendererID GPU_GetDefaultRendererID(void);
602602+GPU_RendererID GPU_GetDefaultRendererID(void);
602603603604/*! Translates a GPU_RendererEnum into a string. */
604605const char* GPU_GetRendererEnumString(GPU_RendererEnum id);