What's new in SFML 2.3.2
Nov 12, 2015
- GENERAL:
- Fixed an issue where FindSFML.cmake couldn't find older versions of SFML (#903)
- Robust alCheck and glCheck macros (#917)
- Fixed FindSFML.cmake to use the uppercase FLAC name (#923)
- Added a CONTRIBUTING file so GitHub shows a message when creating a new issue (#932)
- GRAPHICS:
- Bug fixes:
- Fixed clear bug on RenderTextures (#915)
- Fixed image file extension detection (#929, #930, #931)
- Secure function against random data return (#935, #942)
New in SFML 2.3 (May 11, 2015)
- GENERAL:
- Examples only link against sfml-main in release mode (#610, #766)
- Replaced unsigned int with std::size_t for array indices and sizes (#739)
- Fixed some issues with the Doxygen documentation (#750)
- Added support for EditorConfig (#751)
- Hide success message for CMake in quiet mode (#753)
- Improved documentation for statuses with sf::Ftp (#763)
- Moved stb_image into the extlibs directory (#795)
- Changed the SOVERSION to major.minor (#812)
- Fixed warnings about switch-statements (#863)
- Added missing includes in the general headers (#851)
- [Android] Updated toolchain file and dependencies (#791)
- [Linux] Fixed missing pthread dependency (#794)
- [OS X] Relaxed CMake installation rules regarding framework dependencies (#767)
- WINDOW:
- Features:
- Added new events for handling high-precision scrolling (#95, #810, #837)
- Switched from Xlib to XCB (#200, #319, #694, #780, #813, #825)
- Added support for OpenGL 3 core context creation (#654, #779)
- Bug fixes:
- Fixed glXSwapIntervalSGI being broken for some driver implementations (#727, #779)
- Fixed simultaneous context operations causing crashes on some AMD hardware (#778, #779)
- Fixed joystick identification (#809, #811)
- [iOS] Fixed various issues including stencil bits, device orientation and retina support (#748)
- [iOS] Fixed inconsistency between sf::Touch::getPosition and touch events (#875)
- [Linux] Fixed Alt+F4 not getting triggered in window mode (#274)
- [Linux] Fixed Unix joystick stuff (#838)
- [OS X] Fixed typo in JoystickImpl.cpp to prevent a crash (#762, #765)
- [OS X] Fixed an issue in InputImpl::getSFOpenGLViewFromSFMLWindow (#782, #792)
- GRAPHICS:
- Features:
- Replaced GLEW with loader generated by glLoadGen (#779)
- Added a new constructor to sf::Color that takes an sf::Uint32 (#722)
- Updated stb_image to v2.02 (#777)
- Updated FreeType to v2.5.5 (#799, #804)
- Added checks for software OpenGL (#870)
- Bug fixes:
- Fixed GL_ARB_compatibility not being detected (#859)
- Fixed pixel format selection (#862)
- Bumped back the OpenGL version requirement to 1.1 (#858)
- AUDIO:
- Features:
- Dropped libsndfile and started using Vorbis, FLAC and OGG directly (#604, #757)
- Added a FLAC file to the sound example (#815)
- Bug fixes:
- Fixed access violation error in the destructor of sf::AudioDevice (#30, #602)
- [OS X] Fixed threading issue with sf::SoundStream and OpenAL (#541, #831)
- NETWORK:
- Bug fixes:
- Fixed sf::TcpSocket not handling partial sends properly (#749, #796)
New in SFML 2.2 (Dec 17, 2014)
- GENERAL:
- Support for iOS and Android platform (#410, #440)
- Various documentation corrections (#438, #496, #497, #714)
- Fixed support for compilers on Debian FreeBSD (#380, #578)
- Added support for Visual Studio 2013 and proper support for the TDM builds (#482)
- Fixed CMake problems related to FindSFML and cached variables (#637, #684)
- Switched and enforced LF line endings (#708, #712)
- Updated OpenAL to version 1.15.1 (d077210)
- Made compiler and OS variable names much clearer in CMake files (9b0ed30)
- Re-enabled RPATH feature (e157e7a)
- Slight adjustments to the examples (#737)
- [OS X] Fixed incorrect symlink in freetype.framework (#519)
- [OS X] CMake module for correct dependencies (#548)
- [OS X] Fixed SFML target for Xcode (#595, #596)
- [OS X] Updated implementation, mainly reverting to non-ARC (#601)
- [OS X] Fixed memory leaks and dead store (#615)
- [OS X] Improved event handling and performance (#617)
- [OS X] Reduced memory usage (#672, #698)
- [OS X] OS X 10.10 support (#691, #699)
- [OS X] Improve flexibility of dependencies' locations (#713)
- SYSTEM:
- Features:
- Added substring and replace functions to sf::String (#21, #355)
- Added toUtfX to sf::String (#501)
- Added fromUtfX functions to set the internal data to a string by converting from another string in a fixed encoding (#196)
- Added modulo operator for sf::Time (#429, #430)
- Added division operator for sf::Time (#453)
- Bug fixes:
- Ensured a high resolution for sf::sleep (#439, #475)
- [Windows] Fixed stack unalignment by two internal functions (#412)
- WINDOW:
- Features:
- Added window methods to request and to check focus (#518, #525, #613, #723, #735)
- Provide name, manufacturer ID and product ID via sf::Joystick (#152, #528)
- [FreeBDS] Joystick support (#477)
- [OS X] Improved integration with menus and dock actions (#11)
- [OS X] Support for OpenGL 3.2 (#84)
- [OS X] Improved fullscreen support (#343)
- [OS X] Added support for retina displays (#353, #388)
- Bug fixes:
- sf::Window::create() now also resets framerate limit (#371)
- Fixed OpenGL context leak (#635, #705)
- Fixed various joystick problems (memory leak, accelerometer detected, code refactoring) (#660, #686, #742, #743)
- Optimized sf::Window::waitEvent a bit, no sleep if events are available at first try (ff555d6)
- [OS X] Fixes KeyReleased not being fired in fullscreen mode (#465)
- [OS X] Fixed an issue where disconnecting the keyboard would cause a crash (#467)
- [OS X] Fixed unexpected resizing behavior (#468)
- [OS X] Improved resizing windows (#474)
- [OS X] Fixed memory leak with sf::Window::create() (#484)
- [OS X] Fixed menu shortcuts in fullscreen on OS X (#527)
- [OS X] Improved cursor hiding (#703)
- [OS X] Fixed right click not detected with trackpads (#716, #730)
- GRAPHICS:
- Features:
- Provide more information about the loaded font in sf::Font (#164)
- Implemented a more flexible blending system (#298)
- Added strikethrough text style (#243, #362, #682)
- Slight optimization for sf::Text::setString (#413)
- Added subtraction operator for sf::Color (#114, #145)
- Optimized sf::Image::flipVertically/flipHorizontally (#555)
- Changed sf::Font measurements from int to float to allow better underline drawing (#693)
- Bug fixes:
- Improved text quality for small and pixelated fonts (#228)
- Yet another fix for Intel GPUs with sf::RenderTexture (#418)
- Removed VTab since it cause issues and doesn't have a use nowadays (#442, #445, #460, #588)
- Fixed broken BDF and PCF font formats (#448)
- Fixed compilation issue with newer versions of GCC for sf::Rect (#458)
- Fixed resetGLStates() not explicitly setting the default polygon mode (#480)
- Fixed division-by-zero in sf::RectangleShape (#499)
- Fixed potential memory leak in sf::Font (#509)
- Updated glext and removed glxext (#511, #583)
- Make sure texture unit 0 is active when resetting sf::RenderTarget states (#523, #591)
- Fixed texture rect computation in fonts (#669)
- Improved rendering of underlined text (#593)
- Avoided repeated output of error messages (#566)
- Fixed text rendered with vertical offset on ascent and font size mismatch (#576)
- Fixed rounding problem for viewports (#598)
- Fixed sf::Shader::isAvailable() possibly breaking context management (#211, #603, #608, #603)
- Fixed sf::Texture::getMaximumSize() possibly breaking context management (#666)
- Fixed various sf::Text rendering issues (#692, #699)
- The texture matrix is now reset in sf::Texture::bind(NULL) (7c4b058)
- AUDIO:
- Features:
- Added support for selecting the audio capture device (#220, #470)
- Make sf::SoundRecorder processing frequency configurable (#333)
- Added up vector to sf::Listener (#545)
- Bug fixes:
- Prevented sf::SoundStream::setPlayingOffset() from restarting playing even when paused (#203, #592)
- Fixed sf::SoundBuffer contents not being able to be updated when still attached to sounds (#354, 367, #390, #589)
- Catch audio format error and prevent division by zero (#529)
- Fixed sf::SoundBuffer returning wrong duration for sounds containing more than ~4.3 million samples (2ff58ed)
- Optimized sf::Listener with a cache (d97e524)
- NETWORK:
- Features:
- Added support for PUT and DELETE in sf::Http (#257, #312, #607)
- Added support for chunked HTTP transfers (#296, #337)
- Added support for 64-bit integers in sf::Packet (#710)
- Made sf::Ftp::sendCommand() public (2c5cab5)
- Bug fixes:
- Checked socket descriptor limit (#153, #628, #683)
- Fixed sf::TcpSocket::connect()'s switching from blocking to non-blocking mode on immediate connection success (#221)
- Fixed FTP download and upload file sizes being limited by available RAM (#565, #590)
- Fixes C++11 compiler warnings for sf::Uint8 (#731, #732)
New in SFML 2.1 (Jul 29, 2013)
- sfml-window:
- Fixed MouseMove event sometimes not generated when holding left button on Windows (#225)
- Fixed ContextSettings ignored when creating a 3.x/4.x OpenGL context on Linux (#258)
- Fixed ContextSettings ignored on Linux when creating a window (#35)
- Fixed windows bigger than the desktop not appearing on Windows (#215)
- Fixed KeyRelease events sometimes not reported on Linux (#404)
- Now using inotify on Linux to avoid constantly polling joystick connections (#96)
- Add keypad return, equal and period keys support for OS X
- Improved mouse events on OS X regarding fullscreen mode
- Improved mouse events on OS X (#213, #277)
- Improved reactivity of setMousePosition on OS X (#290)
- Fixed mouse moved event on OS X when dragging the cursor (#277)
- Added support for right control key on OS X
- Fixed KeyRelease event with CMD key pressed (#381)
- Improved TextEntered for OS X (#377)
- Fixed taskbar bugs on Windows (#328, #69)
- Improved the performances of Window::getSize() (the size is now cached)
- Added the WM_CLASS property to SFML windows on Linux
- Fixed Window::getPosition() on Linux (#346)
- Fake resize events are no longer sent when the window is moved, on Linux
- Unicode characters outside the BMP (> 0xFFFF) are now correctly handled on Windows (#366)
- Pressing ALT or F10 on Windows no longer steals the focus
- sfml-graphics:
- Fixed bounding rect of sf::Text ignoring whitespaces (#216)
- Checking errors in RenderTarget::pushGLStates() to avoid generating false error messages when user leaves unchecked OpenGL errors (#340)
- Solved graphics resources not updated or corrupted when loaded in a thread (#411)
- Fixed white pixel showing on first character of sf::Text (#414)
- Optimized Shader::setParameter functions, by using a cache internally (#316, #358)
- sf::Rect::contains and sf::Rect::intersects now handle rectangles with negative dimensions correctly (#219)
- Fixed Shape::setTextureRect not working when called before setTexture
- sfml-audio:
- Added a workaround for a bug in the OS X implementation of OpenAL (unsupported channel count no properly detected) (#201)
- loadFromStream functions now explicitly reset the stream (seek(0)) before starting to read (#349)
- Fixed SoundBuffer::loadFromStream reading past the end of the stream (#214)
- sfml-network:
- Replaced the deprecated gethostbyname with getaddrinfo (#47)
- Fixed non-blocking connection with a sf::TcpSocket on Windows
- Minor improvements to sf::Packet operators (now using strlen and wcslen instead of explicit loops) (#118)
- Fixed TCP packet data corruption in non-blocking mode (#402, #119)
- On Unix systems, a socket disconnection no longer stops the program with signal SIGPIPE (#72)
- Examples:
- Updated the Window and OpenGL examples (got rid of GLU and immediate mode)
New in SFML 2.0 RC (May 18, 2012)
- SYSTEM:
- OS-specific implementations (threads, mutexes) no longer appear in the public headers
- Added thread-local storage classes
- Made sf::Thread more flexible, it can now be constructed from various function types (member, non-member, with or without argument)
- Improved string handling: added the sf::String and sf::Utf classes
- Errors are now written to a SFML specific stream (sf::err()) rather than std::cerr
- Removed the sf::Randomizer class
- sf::Mutex is now recursive on all platforms (was not on Linux and Mac OS X)
- Added the sf::InputStream interface, to write your own custom data streams
- Improved the reliability of the sf::Clock implementation: it is now monotonic, and uses the best resolution available
- Added the sf::Time class to represent time values
- Renamed sf::Clock::Reset to Restart, and it now returns the elapsed time
- WINDOW:
- Renamed sf::WindowSettings to sf::ContextSettings, changed default values (24, 8, 0) -> (0, 0, 0)
- Added the context version to sf::ContextSettings (to be allow creating OpenGL 3.x or 4.x contexts)
- OpenGL headers are no longer included by default in sfml-window, it is now in a dedicated header: SFML/OpenGL.hpp
- Added sf::Style::Default for sf::Window
- Merged sf::VideoMode::GetModesCount and sf::VideoMode::GetMode into a single function sf::VideoMode::GetFullscreenModes
- Added a blocking WaitEvent function in sf::Window
- Added sf::Window::GetSystemHandle() to retrieve the internal, OS specific handle of the window
- Added SetTitle and GetPosition functions to sf::Window
- Added mouse position to the Event::MouseWheelMoved event
- Added support for OpenGL 3 (and above) contexts
- sf::Input has been replaced with sf::Joystick, sf::Keyboard, sf::Mouse, which are directly connected to the OS rather than relying on events
- Renamed accessors in sf::Window to be more consistent (UseVerticalSync -> SetVerticalSyncEnabled, Show -> SetVisible, etc.)
- Added JoystickConnected and JoystickDisconnected events
- GRAPHICS:
- Added the sf::RenderTexture class, to draw to a texture rather than to a window
- Added the sf::Texture class, sf::Image is now a simple pixel storage
- Slightly changed the interface of sf::View
- Added viewport to sf::View
- Added rotation to sf::View
- Improved rendering performances
- Removed RenderTarget::PreserveOpenGLStates, replaced with PushGlStates/PopGlStates
- Added Texture::GetMaximumSize()
- Views are now handled by value (copied), not by reference
- Renamed membres in sf::Glyph: Rectangle -> Bounds, TexCoords -> TextureRect
- Renamed sf::PostFx to sf::Shader, which now uses pure GLSL and is more flexible (can be applied to individual drawables)
- Added support for vertex shaders in sf::Shader
- Inverted angles in drawable classes
- Textures are not smooth anymore by default
- Added sf::Texture::SetRepeated/IsRepeated
- Renamed sf::String to sf::Text
- Added Texture::UpdatePixels for fast pixel updates from various sources (a pixel array, a sf::Image, a sf::Window)
- sf::Rect is now defined as [left, top, width, height]
- Added a parameter to Sprite::SetTexture, to allow auto-adjustment of the subrect to the size of the new texture
- Fixed tab character not properly rendered in sf::Text
- Renamed the Center property of drawables to Origin
- sf::Font now dynamically adapts to the rendered text, there's no more fixed size and character set
- Added sf::Font::LoadFromStream, sf::Image::LoadFromStream, sf::Texture::LoadFromStream, sf::Shader::LoadFromStream
- Added Image::FlipHorizontally and Image::FlipVertically
- Added low-level graphics classes: sf::Vertex and sf::VertexArray, to allow creating more optimized drawable entities
- Removed blending mode, shader, etc. from drawable classes, they are now in a sf::RenderStates class that you can pass to the Draw function
- sf::Shape is now an abstract base class, added the sf::CircleShape, sf::RectangleShape and sf::ConvexShape derived classes
- sf::Shape can now be textured
- Added the sf::Transform and sf::Transformable classes
- AUDIO:
- Removed dependency to stb_vorbis
- Renamed SoundRecorder::CanCapture to SoundRecorder::IsAvailable
- Fixed sf::Listener's target that was a relative direction instead of an absolute position
- Added support for saving audio files as ogg/vorbis
- Added the ability to seek in sound streams and musics
- Added sf::SoundBuffer::LoadFromStream, sf::Music::OpenFromStream
- NETWORK:
- Reorganized and renamed the socket classes, however the features remain the same
- Socket classes instances now have entity semantics, they cannot be copied anymore
- Removed dependencies to system specific libraries in the public headers
- Made packet handling with UDP sockets more robust
- Added support for Unicode strings in sf::Packet
- Got rid of whatismyip.org as the default server for public IP retrieval
- Changed sf::Packet::operator bool() to something similar that avoids inappropriate implicit conversions
- Added support for the UDP broadcast address
- Added functions to retrieve the local and peer port/address in socket classes
- GENERAL:
- Important improvements to the API documentation, it contains more details and code examples
- Changed const char* to const void* in functions that deal with raw bytes
- The external libraries used by sfml-graphics are now linked instead of being integrated into the source code
- Removed the Qt and wxWidgets samples
- Switched to the CMake meta-build system, dropped individual support for compilers/IDEs
- New naming conventions for binaries (major version number appears in Windows DLLs -not import libraries)
- You now need to define SFML_STATIC for static libraries (was previously SFML_DYNAMIC for dynamic libraries)
- Added the SFML_VERSION_MAJOR and SFML_VERSION_MINOR macros
- Added support for 64-bits builds
- Changed the naming convention for public members and free functions (lowerCase instead of UpperCase)
New in SFML 1.6 (Apr 21, 2010)
- System
- Fixed the initial seed of sf::Randomizer which is always the same on some configurations
- Window
- Fixed inconsistencies with the state of the left/right shift keys on Windows
- Increased the number of supported joysticks to 4
- Fixed joystick axes being sometimes ignored
- Fixed Event::TextEntered ignoring the key repeat state
- Fixed KeyEvent.Alt/Control/Shift members not working, in SFML.Net
- Graphics
- Disabled implicit conversion from sf::Image to sf::Sprite
- Fixed crash with the default font at global exit on Windows
- Made image loading thread-safe
- Improved accuracy of rendering
- Fixed current OpenGL matrix mode not properly saved when PreserveOpenGLStates is activated
- Network
- Fixed crashes in Ftp::Download and Ftp::Upload with empty files
- Fixed SocketTCP::Connect with timeout returning success when connection failed
- Http::Response::GetField is now case insensitive
- Added "Connection: close" by default for HTTP 1.1 requests
- Fixed POST requests not working with sf::Http
- Audio
- Copied Attenuation and MinDistance members in sf::Sound's copy constructor
- Fixed crash when destroying a SoundBuffer used by a Sound
- Fixed tiny musics ignoring the "loop" flag
- Fixed musics sometimes being stuck after looping twice
- General
- SFML libraries are now be compiled with gcc 4.4.0 on Windows (MinGW)
- Updated the Qt sample
New in SFML 1.5 (Jun 7, 2009)
- Fixed application frozen if a USB joystick was plugged, on Windows
- Fixed joysticks sometimes not working at all on Vista
- Updated the Qt sample and tutorial to work with Qt 4.5
- Added missing VideoMode functions to SFML.Net
- Properly detect supported depths for video modes on Linux
- Fixed undefined behaviour when creating two fullscreen windows
- Fixed Window::SetSize not resizing to the requested size, on Windows
- Fixed KeyPressed event sometimes returning a null key code on Windows
- Fixed EnableKeyRepeat not working anymore after a second window has been created on Linux
- Fixed bug when destroying / recreating a window on Mac OS X
- Added support for creating a sf::Window from a Cocoa window on Mac OS X
- Desktop resolution is properly restored when hiding the application on Mac OS X
- Fixed accentuated characters not properly retrieved on Mac OS X
- Added support for composed characters on Mac OS X
New in SFML 1.4 (Jan 21, 2009)
- SYSTEM : Improved unicode support
- WINDOW : Now using signed integers for mouse coordinates to allow negative values
- WINDOW : Fixed sf::Window::EnableKeyRepeat under Linux
- WINDOW : Added cursor position in mouse events
- WINDOW : Added sf::Window::SetIcon function
- WINDOW : Added mouse enter / mouse leave window events
- WINDOW : Added sf::Window::SetSize
- WINDOW : Fixed X11 sample (broken rendering on the first window)
- GRAPHICS : Added functions to copy images onto other images
- GRAPHICS : Added an option to have sf::Image instances not storing their pixels in memory
- GRAPHICS : Made SFML classes completely thread-safe regarding OpenGL calls
- GRAPHICS : Added sf::String::GetCharacterPos to get visual position of a string's character
- GRAPHICS : Added functions to convert from and to drawables' local coordinates
- GRAPHICS : Added more functions to access sf::Font's contents
- GRAPHICS : Fixed sf::Sprite::GetPixel not taking flip x/y in account
- GRAPHICS : Added more accessors for sf::Shape points' attributes
- GRAPHICS : Optimized font's textures
- GRAPHICS : Fixed sf::Matrix3 calculations
- AUDIO : Added GetLoop, SetLoop and GetPlayingPosition to sounds streams
- AUDIO : Removed dependency to the Visual C++ CRT in OpenAL32.dll
- AUDIO : Fixed sf::SoundBufferRecorder which couldn't be reused several times
- AUDIO : Added seeking function to sf::Sound
- AUDIO : Fixed music clics under Linux
- NETWORK : Fixed sf::Packet::OnSend called multiple times if packet was sent more than once
- NETWORK : Added a function to check end of packet
- NETWORK : Fixed inconsistent socket initialization
- NETWORK : Fixed crash when using empty strings with packets
- NETWORK : Disabled Naggle algorithm (buffering) in TCP sockets
- NETWORK : Added HTTP and FTP classes
- NETWORK : Added conversions from and to integer for IP address
- GENERAL : Added debug symbols to debug builds in Code::Blocks
- GENERAL : Added .Net binding
- GENERAL : Improved management of dependant resources
- GENERAL : Now using full unicode instead of UCS-2 for all text-related events and strings
- GENERAL : Added minor version number to libraries names under Linux
- GENERAL : Added install path to Linux makefiles
- WEBSITE : Added a list of the SFML makefiles options to the Linux tutorial