521 {$ELSE} |
521 {$ELSE} |
522 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); |
522 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); |
523 vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR)))); |
523 vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR)))); |
524 {$IFNDEF SDL13} |
524 {$IFNDEF SDL13} |
525 // this attribute is default in 1.3 and must be enabled in MacOSX |
525 // this attribute is default in 1.3 and must be enabled in MacOSX |
526 SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, ((cReducedQuality and rqDesyncVBlank) = 0)) |
526 SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, LongInt((cReducedQuality and rqDesyncVBlank) = 0)); |
527 |
527 |
528 {$IFDEF DARWIN} |
528 {$IFDEF DARWIN} |
529 // fixes vsync in Snow Leopard |
529 // fixes vsync in Snow Leopard |
530 CGLSetParameter(CGLGetCurrentContext(), 222, @one); |
530 CGLSetParameter(CGLGetCurrentContext(), 222, @one); |
531 {$ENDIF} |
531 {$ENDIF} |
919 SDL_FreeSurface(SDLPrimSurface); |
919 SDL_FreeSurface(SDLPrimSurface); |
920 SDLPrimSurface:= nil; |
920 SDLPrimSurface:= nil; |
921 end; |
921 end; |
922 |
922 |
923 {$IFDEF SDL13} |
923 {$IFDEF SDL13} |
924 if SDLwindow = nil then |
924 // these values in x and y make the window appear in the center |
925 begin |
925 x:= SDL_WINDOWPOS_CENTERED_MASK; |
926 // the values in x and y make the window appear in the center |
926 y:= SDL_WINDOWPOS_CENTERED_MASK; |
927 // on ios, make the sdl window appear on the second monitor when present |
927 flags:= SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN; |
928 x:= (SDL_WINDOWPOS_CENTERED_MASK or {$IFDEF IPHONEOS}(SDL_GetNumVideoDisplays() - 1){$ELSE}0{$ENDIF}); |
928 |
929 y:= (SDL_WINDOWPOS_CENTERED_MASK or {$IFDEF IPHONEOS}(SDL_GetNumVideoDisplays() - 1){$ELSE}0{$ENDIF}); |
929 {$IFDEF IPHONEOS} |
930 SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN |
930 // make the sdl window appear on the second monitor when present |
931 {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS {$ENDIF}); // do not set SDL_WINDOW_RESIZABLE on iOS |
931 x:= x or (SDL_GetNumVideoDisplays() - 1); |
932 SDLrender:= SDL_CreateRenderer(SDLwindow, -1, SDL_RENDERER_ACCELERATED or SDL_RENDERER_PRESENTVSYNC); |
932 y:= y or (SDL_GetNumVideoDisplays() - 1); |
933 end; |
933 |
934 |
934 // hardcode the opengles driver as we do our own drawing |
|
935 SDL_SetHint('SDL_RENDER_DRIVER','opengles'); |
|
936 flags:= flags or SDL_WINDOW_BORDERLESS; // do not set SDL_WINDOW_RESIZABLE on iOS |
|
937 {$ENDIF} |
|
938 |
|
939 SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, flags); |
|
940 SDLTry(SDLwindow <> nil, true); |
|
941 SDLrender:= SDL_CreateRenderer(SDLwindow, -1, SDL_RENDERER_ACCELERATED or SDL_RENDERER_PRESENTVSYNC); |
|
942 SDLTry(SDLrender <> nil, true); |
|
943 |
|
944 // clean the renderer before using it |
935 SDL_SetRenderDrawColor(SDLrender, 0, 0, 0, 255); |
945 SDL_SetRenderDrawColor(SDLrender, 0, 0, 0, 255); |
936 SDL_RenderClear(SDLrender); |
946 SDL_RenderClear(SDLrender); |
937 SDL_RenderPresent(SDLrender); |
947 SDL_RenderPresent(SDLrender); |
938 |
948 |
939 // we need to reset the gl context from the one created by SDL as we have our own drawing system |
949 // reset the gl context from the one created by SDL (as we have our own drawing system) |
940 glMatrixMode(GL_PROJECTION); |
950 glMatrixMode(GL_PROJECTION); |
941 glLoadIdentity(); |
951 glLoadIdentity(); |
942 {$ELSE} |
952 {$ELSE} |
943 if not cOnlyStats then |
953 if not cOnlyStats then |
944 begin |
954 begin |