Recent

Author Topic: SDL2 resize window  (Read 426 times)

Pe3s

  • Hero Member
  • *****
  • Posts: 590
SDL2 resize window
« on: November 20, 2024, 10:01:55 am »
I'm writing a small program, but I've encountered a problem
sdl window placed on the TPanel component
when resizing, maximizing the window, it copies the contents of the window,
when minimizing there is a white window.
How can I fix this?

Code: Pascal  [Select][+][-]
  1. procedure TForm1.InitializeSDL;
  2. begin
  3.    if SDL_Init(SDL_INIT_VIDEO) < 0 then
  4.     raise Exception.Create('SDL initialization failed: ' + SDL_GetError);
  5.  
  6.   SDLWindow := SDL_CreateWindowFrom(Pointer(Panel1.Handle));
  7.   if SDLWindow = nil then
  8.     raise Exception.Create('Failed to create SDL window: ' + SDL_GetError);
  9.  
  10.   SDLRenderer := SDL_CreateRenderer(SDLWindow, -1, SDL_RENDERER_ACCELERATED or SDL_RENDERER_PRESENTVSYNC);
  11.   if SDLRenderer = nil then
  12.     raise Exception.Create('Failed to create SDL renderer: ' + SDL_GetError);
  13. end;
  14.  
  15. procedure TForm1.ShutdownSDL;
  16. begin
  17.    if CurrentTexture <> nil then
  18.   begin
  19.     SDL_DestroyTexture(CurrentTexture);
  20.     CurrentTexture := nil;
  21.   end;
  22.   if SDLRenderer <> nil then
  23.   begin
  24.     SDL_DestroyRenderer(SDLRenderer);
  25.     SDLRenderer := nil;
  26.   end;
  27.   if SDLWindow <> nil then
  28.   begin
  29.     SDL_DestroyWindow(SDLWindow);
  30.     SDLWindow := nil;
  31.   end;
  32.   IMG_Quit;
  33.   SDL_Quit;
  34. end;
  35.  
  36. procedure TForm1.RenderImage;
  37. var
  38.   Rect: TSDL_Rect;
  39. begin
  40.   if CurrentTexture = nil then Exit;
  41.  
  42.   // Calculate image rect
  43.   CalculateImageRect(Rect);
  44.  
  45.   // Render the image
  46.   SDL_RenderClear(SDLRenderer);
  47.   SDL_RenderCopy(SDLRenderer, CurrentTexture, nil, @Rect);
  48.   SDL_RenderPresent(SDLRenderer);
  49.  
  50.   // Update status bar
  51.   UpdateStatusBar;
  52. end;                                
  53.  

 

TinyPortal © 2005-2018