SFML
Simple and Fast Multimedia Library
About SFML
Simple and Fast Multimedia Library
What's New in v3.1.0
SFML 3.1 is finally out! 🥳
While "only" a minor version, it brings major updates feature wise. The highlights are:
- Complete revamped text rendering engine using the power of HarfBuzz, cpp-unicodelib and SheenBidi. SFML can finally render complex text layouts, bi-directional texts, provides more glyph-level information and allows for rendering customization.
- The network module joins the 21st century by supporting TLS, HTTPS, IPv6, and SFTP! Additionally, a DNS client has been introduced.
- Unicode support in various parts of the library has been improved.
- Lots of improvements for Android and iOS.
See the [migration guide] on how to migrate from deprecated methods.
Changelog
General
- [iOS] Fix cmake finding SFML static libs package via SFML_DIR (#3360, #3656)
- [Android] Reduce pointer usage (#3363)
- Improve code quality (#3374, #3378, #3397, #3401, #3440, #3442, #3443, #3544, #3678)
- Update CI (#3391, #3553, #3562, #3563, #3583, #3616, #3621, #3637)
- Improve CMake configuration (#3426, #3445, #3551, #3561, #3577, #3582, #3584, #3632, #3633)
- Documentation improvements (#3457, #3568, #3594, #3644, #3704)
- Move joystick example code around to support multiple controllers (#3487)
- [Android] Remove disabling of minifying in release (#3498)
- [Android] Support static libraries on android (#3533, #3664)
- Fix special comments for clang-format and issue tracker URL (#3535)
- Improve dependency handling (#3549, #3597, #3602, #3701, #3703)
- Enhance .gitignore (#3564, #3605)
- Simplify GlCheck implementation (#3586)
- Add build output to gitignore (#3589)
- [iOS] add sfml_logo.png to tennis app resources (#3601)
- [macOS] Generate Xcode scheme for examples so they can be run/debug (#3604)
- [iOS] Improve examples for iOS (#3606, #3607, #3608)
- [Android] Improve examples for Android (#3613, #3697, #3699)
- [macOS] Set Xcode debugger working directory (#3614)
- [macOS] Remove Xcode templates (#3622)
- [Android] 16 KB page sizes for Android (#3655)
System
Features
- Support for
std::string_viewinsf::String(#2445, #2517) - Add
sf::Vector3utype alias for consistency (#3529) - Added support for retrieving the library version that is loaded at runtime via
sf::version()(#3691)
Bugfixes
- Move vector function definitions to inline file so
static_assertsare hit correctly (#3623) - Make Unicode conversions more robust against invalid data (#3628)
Window
Features
- Add non-const overload of
sf::Event::getIf(#3367) - Add tests for
sf::Mouse(#3370) - Provide additional checks for arguments in
WindowBase::handleEvents(#3375) - Add non-const overload of
Event::visit(#3396) - [Windows] Expand
sf::WindowHandletests (#3444) - Update glad GL headers one final time (#3491)
- [iOS] Remove deprecated (no-op) setStatusBarOrientation (#3600)
- [Android] Android scan code and description implementations (#3618)
- Add key release events to event handling example (#3626)
- [Android] Add joystick support for Android (#3497)
Bugfixes
- [macOS] Use CGWarpMouseCursorPosition to set mouse position on macOS (#1574, #3648)
- [macOS] Remove NSOpenGLPFAAccelerated attribute to allow mac software renderer (#1640, #3649)
- [Android] Fix crash on Android when requesting the position of a touch that isn't down, and deprecate fake "realtime" touch API (#2257, #3634)
- [Android] Fix backspace TextEntered event for Android (#2272, #3665)
- [Linux] Fixed and improved multiple issues with the X11 window implementation (#2943, #2947, #3676, #3677, #3684)
- [iOS] Use viewWillTransitionToSize to handle orientation changes on iOS (#3241, #3635)
- Make
glCheckErrortake astd::string_viewrather than constructing astd::filesystem::pathon error checks (#3359) - Make keyboard key/scancode count variables inline (#3379)
- Revert
Event::visitregression and add test (#3400) - [Windows] Fix using Emoji with
sf::Clipboard(#3435) - [iOS] iOS fixes (#3436)
- [Windows] Fix using Emoji in Windows window titles (#3437)
- [Android] Block window creation on Android until async process finishes (#3521, #3643)
- Move the JoystickRecord directly into the vector (#3560)
- [macOS] Add missing cast between NSWindow and SFOpenGLView (#3596)
- [Windows] Silence warning about default DirectInput version (#3598)
- [iOS] When creating a window on iOS send a resized event if needed (#3610)
- [Android] When backgrounding on Android we still need to recreate the surface (#3658)
- [macOS] Fixed allocated buffer being too small when converting CFStringRef to std::string in the macOS joystick implementation (#3679, #3681)
Graphics
Features
- Improved text layout and shaping (#246, #2713, #2988, #3053, #3543, #3625)
- Enable range based looping of
sf::VertexArray(#3366) - Added support for making OpenGL errors fatal (#3468)
- Add support for QOI image format (#3554, #3700)
- Applied "Return Early Pattern" in some places (#3611)
- Support Unicode 17.0 (update cpp-unicodelib and SheenBidi) (#3666)
Bugfixes
- Bevel shape outline beyond threshold (#2727, #2741)
- Fix #647
sf::Imagesupport for Unicode filenames save/load (#3403) - Fix opening
sf::Fontfrom non-ASCII path (#3422) - Reduce warnings inside Windows Vm (#3489)
- Deprecate
sf::Font::getKerningoverload which usesstd::uint32_tto represent Unicode codepoints (#3518) - Prevent copy of shaper by moving the shared_ptr (#3558)
Audio
Features
- Improve audio device and stream rerouting management (#3490, #3523)
- Add
sf::PlaybackDevice::getDeviceSampleRate(#3525) - [Linux] Update miniaudio to version 0.11.24 (#3640, #3641)
Bugfixes
- Fix saving FLAC files to non-ASCII paths (#3421)
- Fix wrong function name in
SoundBuffercomment (#3488) - Add missing
<ostream>include inOutputSoundFile.cpp(#3499, #3500) - Use const ref instead of cloning channelMap (#3519)
- Update miniaudio to v0.11.22. (#3524)
- Fixed wrong sample count being reported for certain ogg audio files (#3578, #3579)
- Set audio playback periodSizeInFrames to allow playing very short duration audio clips (#3702)
Network
Features
- Add support for IPv6 and more types of DNS queries (#307, #1023, #3667)
- Improve sf::SocketSelector usability and scalability (#2574, #3674)
- Add TLS and HTTPS support (#3545, #3694, #3696)
- Added support for SFTP as a replacement for FTP (#3675, #3687)
Bugfixes
- Added boolean return value to sf::Http::setHost. Added test to sf::Http::setHost. Made sf::Http::sendRequest const (#3542, #3629)
- Prevent copy of message by moving the string (#3559)
- Fixed sf::SocketSelector epoll implementation not correctly interpreting sf::Time::Zero as a request to wait indefinitely (#3683)
- [Linux] Allow configuring the maximum number of file descriptors opened during network tests (#3693, #3695)
Unit Tests
- Update Catch2 (#3387, #3552)
- Tests for loading files with non-ASCII filenames (#3410, #3413, #3415, #3416)
- Harden copyability tests to test for triviality (#3411)
- Test for trivial move operations (#3414)
- Revamp
sf::Stringtests (#3418) - Add tests for
sf::OutputSoundFile(#3419) - Use Catch2 generators to simplify tests (#3420)
- Add a CMake option to disable internet tests (#3429)
- Revamp
sf::Utf<N>tests (#3430) - Add test for empty window title (#3438)
- [Windows] Add initial testcases for Win32 WindowHandle construction of WindowBase (#3439, #3444)
- Fix printing
sf::Vector2in window tests (#3452) - Work around issue with Catch2 (#3472)
- Separate CMakeLists for each test target (#3573)
- [Android] Support for testing android on windows and mac (#3590)
- [macOS] When using xcode discover tests before test to avoid running unsigned code (#3647)
Contributors
A big THANK YOU to the following people:
- @FRex for guiding us in fixing and updating our Unicode support.
- @ChrisThrasher for implementing a lot of the required Unicode stuff and even giving a talk about it.
- @binary1248 for bringing us not only a completely revamped text rendering engine, but also TLS & HTTPS support, IPv6 support, SFTP support and much more.
- @JonnyPtn for tons and tons of little fixes for the mobile platforms (iOS & Android).
And additionally these lovely people:
- @Alexej
- @Bambo-Borris
- @binary1248
- @brad0
- @ChrisThrasher
- @dogunbound
- @eXpl0it3r
- @FRex
- @grapurabaki
- @jcowgill
- @Joelsonsmendonca
- @JonnyPtn
- @kimci86
- @learn-more
- @Lorenzooone
- @mikomikotaishi
- @na464724-blip
- @nerudaj
- @niccy266
- @ognevny
- @oomek
- @Pixel-Tony
- @Plecaj
- @R-Goc
- @raineycat
- @ReadWriteV
- @Rosme
- @SirusDoma
- @solbjorn
- @swordfatih
- @texus
- @TheMaverickProgrammer
- @vittorioromeo
- @Zombieschannel
- @ZXShady
Legal Notice
This software is provided by its original developers. We only index and provide links to official download sources. All downloads are from the original publishers and are completely legal and safe.
Download Information
Related Apps
Musify
GitHubUnlock the full potential of music: Stream effortlessly with one app!
mpv-android
GitHubvideo player for Android based on libmpv ↦ #mpv-android @ irc.libera.chat
mpv-android
GitHubvideo player for Android based on libmpv ↦ #mpv-android @ irc.libera.chat
musicat
GitHubA sleek desktop music player and tagger for offline music 🪕. With gapless playback, smart playlists, and a map view! Built with Svelte and Tauri