Ottenere informazioni relative al display video mediante le funzioni del API di SDL2
Da Gambas-it.org - Wikipedia.
Versione del 4 giu 2024 alle 08:47 di Vuott (Discussione | contributi)
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.3 ".
Mostriamo un semplice esempio:
Library "libSDL2-2.0:0.3000.3" 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