È stata rilasciata la libreria SDL 2.0.18 (Simple DirectMedia Layer), mirata a semplificare la scrittura di giochi e applicazioni multimediali. La libreria SDL fornisce strumenti come l'output grafico 2D e 3D accelerato dall'hardware, gestione degli input, riproduzione audio, output 3D tramite OpenGL/OpenGL ES/Vulkan e molte altre operazioni correlate. La libreria è scritta in C ed è distribuita sotto licenza zlib. Per sfruttare le funzionalità di SDL in progetti in diversi linguaggi di programmazione sono disponibili binding. Il codice della libreria è distribuito sotto licenza Zlib.
Nel nuovo rilascio:
- Per ogni funzione è fornita l'informazione sulla versione di SDL in cui è apparsa la funzione. È fornita una sincronizzazione automatica della documentazione nel wiki con i file di intestazione.
- Sono state aggiunte nuove funzioni:
- SDL_RenderGeometry() e SDL_RenderGeometryRaw() per il disegno di forme arbitrarie utilizzando il 2D Render API.
- SDL_SetTextureUserData() e SDL_GetTextureUserData() per associare i dati dell'applicazione a una texture.
- SDL_RenderWindowToLogical() e SDL_RenderLogicalToWindow() per la conversione tra le coordinate della finestra e le coordinate logiche di rendering.
- SDL_RenderSetVSync() per abilitare la sincronizzazione dell'output con il segnale di aggiornamento del fotogramma (vblank).
- SDL_PremultiplyAlpha() per applicare la trasparenza ai blocchi di pixel nel formato SDL_PIXELFORMAT_ARGB8888.
- SDL_SetWindowMouseRect() e SDL_GetWindowMouseRect() per limitare il movimento del cursore del mouse a una determinata area della finestra.
- SDL_GameControllerHasRumble(), SDL_GameControllerHasRumbleTriggers(), SDL_JoystickHasRumble() e SDL_JoystickHasRumbleTriggers() per verificare il supporto della vibrazione adattativa (rumble) da parte del controller di gioco e del joystick.
- SDL_GetWindowICCProfile() per ottenere il profilo ICC dei colori della finestra (per controllare la modifica del profilo è stato proposto l'evento SDL_WINDOWEVENT_ICCPROF_CHANGED).
- Sono stati aggiunti nuovi indizi: SDL_HINT_APP_NAME per fornire informazioni sul nome dell'applicazione e SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY per abilitare la trasparenza per le finestre EGL.
- Aggiunto un nuovo evento della finestra SDL_WINDOWEVENT_DISPLAY_CHANGED, che viene generato quando cambia il monitor su cui è visualizzata la finestra.
- Fornita la possibilità di determinare i parametri esatti del movimento della rotella del mouse utilizzando i campi "preciseX" e "preciseY" nei parametri dell'evento.
- La funzione SDL_WaitEvent() è stata riprogettata per ridurre il carico sulla CPU.
- L'API hidapi è stata spostata nella categoria pubblica ed è ora accessibile tramite il file di intestazione SDL_hidapi.h.
- Nella piattaforma Windows è stato migliorato il rilevamento del movimento relativo del mouse in Windows Remote Desktop. È stata aggiunta l'impostazione SDL_HINT_IME_SHOW_UI per mostrare i componenti dell'interfaccia nativa (di default sono nascosti). Per le applicazioni UWP, è stato utilizzato WGI invece di XInput per migliorare il supporto dei controller.
- Per la piattaforma Linux sono state implementate le impostazioni: SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME per associare le azioni visualizzate quando il salvaschermo è disattivato; SDL_HINT_LINUX_JOYSTICK_CLASSIC per scegliere quale dei dispositivi (/dev/input/js* o /dev/input/event*) utilizzare per il joystick; SDL_HINT_JOYSTICK_DEVICE per impostare il dispositivo da aprire per il joystick. È stata aggiunta la funzione SDL_LinuxSetThreadPriorityAndPolicy() per gestire la priorità dei thread.
- Per la piattaforma Android è stato implementato il supporto all'uscita e cattura audio tramite l'API AAudio. Di default, il supporto per il controller Steam Controller è disattivato (per attivarlo è fornita l'impostazione SDL_HINT_JOYSTICK_HIDAPI_STEAM).
Aggiornamento: Uno degli autori di SDL, Ryan Gordon (icculus), ha annunciato che prevede di aggiungere a SDL una semplice API 3D, che supporti le funzionalità delle API delle moderne GPU (Vulkan, Direct3D 12, Metal). La compagnia Epic Games finanzierà questo sviluppo nell'ambito del programma Epic Megagrant. Gordon ha presentato la domanda di grant nel maggio 2021 e ha ricevuto una risposta positiva due settimane fa.
Fonte: opennet.ru
