Differenze tra le versioni di "Ottenere informazioni relative al display video mediante le funzioni del API di SDL2"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Mediante alcune funzioni esterne del API di ''SDL2'' è possibile conoscere la dimenione in pixel e la frequenza di refresh del display video.
 
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.10.0''"
+
E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libSDL2-2.0.so.0.3000.0'' ".
  
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  Library "libSDL2-2.0:0.10.0"
+
  Library "libSDL2-2.0:0.3000.0"
 
   
 
   
 
  Public Struct SDL_DisplayMode
 
  Public Struct SDL_DisplayMode
Riga 38: Riga 38:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim i, r As Integer
 
   Dim i, r As Integer
Riga 44: Riga 44:
 
    
 
    
 
  <FONT Color=gray>' ''Inizializza la libreria SDL2 in modalità "video":''</font>
 
  <FONT Color=gray>' ''Inizializza la libreria SDL2 in modalità "video":''</font>
  SDL_Init(SDL_INIT_VIDEO)
+
  SDL_Init(SDL_INIT_VIDEO)
 
    
 
    
 
  <FONT Color=gray>' ''Ottiene la corrente modalità display di tutti i display:''</font>
 
  <FONT Color=gray>' ''Ottiene la corrente modalità display di tutti i display:''</font>
  For i = 0 To SDL_GetNumVideoDisplays() - 1
+
  For i = 0 To SDL_GetNumVideoDisplays() - 1
    r = SDL_GetCurrentDisplayMode(i, dm)
+
    r = SDL_GetCurrentDisplayMode(i, dm)
    If r <> 0 Then
+
    If r <> 0 Then
      Print "Impossibile ottenere la modalità display per il video: "; i; " - "; SDL_GetError()
+
      Print "Impossibile ottenere la modalità display per il video: "; i; " - "; SDL_GetError()
    Else
+
    Else
      Print "Display #"; i; ": la modalità del corrente display è "; dm.w; "x"; dm.h; " pixel, hz."; dm.refresh_rate
+
      Print "Display #"; i; ": la modalità del corrente display è "; dm.w; "x"; dm.h; " pixel, hz."; dm.refresh_rate
    Endif
+
    Endif
  Next
+
  Next
 
    
 
    
 
  <FONT Color=gray>' ''Chiude la libreria SDL2:''</font>
 
  <FONT Color=gray>' ''Chiude la libreria SDL2:''</font>
  SDL_Quit()
+
  SDL_Quit()
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 16:46, 18 mar 2024

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