Lançada a versão da biblioteca SDL 3.4.0 (Simple DirectMedia Layer). A biblioteca visa simplificar a escrita de jogos e aplicações multimídia, oferecendo funcionalidades como renderização 2D e 3D acelerada por hardware, processamento de entrada, reprodução de áudio e saída 3D através do OpenGL, OpenGL ES, Metal, Direct3D ou Vulkan. O código é escrito em C e distribuído sob a licença Zlib. Há wrappers disponíveis para usar SDL em projetos em várias linguagens de programação.
SDL 3.4.0 é a segunda versão estável significativa na série SDL 3.x — a primeira versão estável foi a série 3.2.x, enquanto a série 3.3.x foi posicionada como experimental. As principais mudanças no SDL 3.4.0 estão relacionadas à melhoria da portabilidade entre APIs de GPU 3D e APIs para renderização 2D, à ampliação do suporte à compilação em WebAssembly usando o compilador Emscripten, à melhoria do funcionamento com mesas digitalizadoras e canetas digitais, e à introdução do suporte embutido ao formato de imagem PNG.
Entre os novos recursos no SDL 3.4.0:
- Adicionada a suporte integrado para imagens no formato PNG, com funções como SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() e SDL_SavePNG_IO para trabalhar com elas. As funções SDL_LoadSurface() e SDL_LoadSurface_IO foram acrescentadas para determinar o formato (PNG ou BMP) e carregar imagens como superfícies.
- Adicionada a função SDL_RotateSurface() para criar uma cópia rotacionada da superfície.
- Adicionada a função SDL_CreateAnimatedCursor() para criar cursores animados coloridos, além da dica SDL_HINT_MOUSE_DPI_SCALE_CURSORS para escalonamento automático dos cursores de acordo com o nível de escala da tela.
- Adicionadas as funções SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() e SDL_GetWindowProgressValue() para mostrar o progresso das operações no ícone do aplicativo na barra de tarefas.
- Adicionados recursos para utilizar a API de GPU em hardware mais antigo.
- Adicionado o recurso SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER e SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN para ajustar e ativar capacidades da API Vulkan ao criar dispositivos de GPU.
- Adicionada a função SDL_GetGPUDeviceProperties() para consultar informações sobre a GPU.
- Adicionadas funções SDL_CreateGPURenderer() e SDL_GetGPURendererDevice() para utilizar GPU na renderização 2D, assim como SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() e SDL_DestroyGPURenderState() para ativar shaders de fragmento na renderização 2D.
- Na renderização 2D com GPU, foi implementado o suporte a texturas YUV e HDR. O suporte a texturas com paletas foi adicionado, com funções SDL_GetTexturePalette() e SDL_SetTexturePalette(). Também foram adicionadas as funções SDL_GetPixelFormatFromGPUTextureFormat() e SDL_GetGPUTextureFormatFromPixelFormat() para conversão de formatos de texturas, além dos parâmetros SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER e SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER para criar texturas 2D a partir de texturas GPU. Funções como SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode() e SDL_SetRenderTextureAddressMode() foram adicionadas para configuração de texturas.
- Foi adicionado o parâmetro SDL_SCALEMODE_PIXELART para utilizar um algoritmo de escala otimizado para gráficos em pixel.
- Eventos implementados: SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED, SDL_EVENT_SCREEN_KEYBOARD_SHOWN, SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE, SDL_EVENT_PINCH_END e SDL_EVENT_AUDIO_DEVICE_ADDED, que são acionados na mudança de limites, aparecimento/ocultação do teclado na tela, gestos na tela e adição de dispositivo de áudio.
- Funções SDL_PutAudioStreamDataNoCopy() e SDL_PutAudioStreamPlanarData() adicionadas para processamento mais eficiente de fluxos de áudio.
- Suporte adicionado para controladores de jogos Nintendo Switch 2, conectados via USB. O suporte a controladores 8BitDo, FlyDigi e Hand Held Legend SInput foi expandido.
- Para melhorar o desempenho de aplicativos WebAssembly construídos com o compilador Emscripten, foram adicionadas a função SDL_SetWindowFillDocument() e os parâmetros SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING e SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING.
- Na plataforma Linux, foi implementado suporte a operações atômicas ao usar KMSDRM, ativadas pela propriedade SDL_HINT_KMSDRM_ATOMIC. O parâmetro SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER foi adicionado para solicitar o dispositivo de saída wl_output associado à tela em ambientes baseados em Wayland.
Fonte: opennet.ru
