Ottenere informazioni relative al display video mediante le funzioni del API di SDL2

Da Gambas-it.org - Wikipedia.

Mediante alcune funzioni esterne del API di SDL2 è possibile conoscere la dimenione in pixel e la frequenza di refresh del display video.

E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "libSDL2-2.0.so.0.3000.0 ".


Mostriamo un semplice esempio:

Library "libSDL2-2.0:0.3000.0"

Public Struct SDL_DisplayMode
  formato As Integer
  w As Integer
  h As Integer
  refresh_rate As Integer
  driverdata As Pointer
End Struct

Private Const SDL_INIT_VIDEO As Integer = &20

' int SDL_Init(Uint32 flags)
' Initialize the SDL library.
Private Extern SDL_Init(flags As Integer) As Integer

' int SDL_GetNumVideoDisplays(void)
' Gets the number of available video displays.
Private Extern SDL_GetNumVideoDisplays() As Integer

' int SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode* mode)
' Gets information about the current display mode.
Private Extern SDL_GetCurrentDisplayMode(displayIndex As Integer, mode As SDL_DisplayMode) As Integer

' const char* SDL_GetError(void)
' Returns a message with information about the specific error that occurred.
Private Extern SDL_GetError() As String

' void SDL_Quit(void)
' Clean up all initialized subsystems.
Private Extern SDL_Quit()


Public Sub Main()
 
 Dim i, r As Integer
 Dim dm As New SDL_DisplayMode
  
' Inizializza la libreria SDL2 in modalità "video":
 SDL_Init(SDL_INIT_VIDEO)
  
' Ottiene la corrente modalità display di tutti i display:
 For i = 0 To SDL_GetNumVideoDisplays() - 1
   r = SDL_GetCurrentDisplayMode(i, dm)
   If r <> 0 Then
     Print "Impossibile ottenere la modalità display per il video: "; i; " - "; SDL_GetError()
   Else
     Print "Display #"; i; ": la modalità del corrente display è "; dm.w; "x"; dm.h; " pixel, hz."; dm.refresh_rate
   Endif
 Next
  
' Chiude la libreria SDL2:
 SDL_Quit()
  
End


Riferimenti