hedgewars/uStore.pas
changeset 5187 b01ab1ef01fb
parent 5186 a05c14510c8a
child 5215 d4c529624460
equal deleted inserted replaced
5186:a05c14510c8a 5187:b01ab1ef01fb
   508 
   508 
   509 procedure SetupOpenGL;
   509 procedure SetupOpenGL;
   510 {$IFNDEF IPHONEOS}
   510 {$IFNDEF IPHONEOS}
   511 var vendor: shortstring;
   511 var vendor: shortstring;
   512 {$IFDEF DARWIN}
   512 {$IFDEF DARWIN}
   513 const one = 1;
   513 const one : LongInt = 1;
   514 {$ENDIF}
   514 {$ENDIF}
   515 {$ENDIF}
   515 {$ENDIF}
   516 begin
   516 begin
   517 
   517 
   518 {$IFDEF IPHONEOS}
   518 {$IFDEF IPHONEOS}
   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