Simple and Fast Multimedia Library

From Wikipedia, the free encyclopedia

Template:Short description

Page Module:Infobox/styles.css has no content.

Script error: No such module "If empty".
[[Programmer|Original authorTemplate:Pluralize from text]]Laurent Gomila, and others
[[Programmer|DeveloperTemplate:Pluralize from text]]SFML Team
Initial releaseAugust 9, 2007; Lua error in package.lua at line 80: module 'Module:Date' not found. (2007-08-09)Script error: No such module "Check for unknown parameters".
Template:Infobox software/simple
Written inScript error: No such module "If empty".
EnginePage Template:Plainlist/styles.css has no content.Script error: No such module "Check for unknown parameters".Template:EditAtWikidata
Operating systemScript error: No such module "If empty".
TypeAPI
Licensezlib License[1][2]
Websitewww.sfml-dev.orgScript error: No such module "Check for unknown parameters".
RepositoryPage Template:Plainlist/styles.css has no content.
Script error: No such module "Check for unknown parameters".

Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".

Simple and Fast Multimedia Library (SFML) is a cross-platform software development library designed to provide a simple application programming interface (API) to various multimedia components in computers. It is written in C++ with bindings available for Ada, C, Crystal, D, Euphoria, Go, Java, Julia, .NET, Nim, OCaml, Python, Ruby, Rust, Node.js, Beef and Zuko.[3] Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2.[4]

SFML handles creating and input to windows, and creating and managing OpenGL contexts. It also provides a graphics module for simple hardware acceleration of 2D computer graphics which includes text rendering using FreeType, an audio module that uses OpenAL, replaced by miniaudio as of v3.0.0,[5] and a networking module for basic Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) communication.

SFML is free and open-source software provided under the terms of the zlib/png license. It is available on Linux, macOS, Windows and FreeBSD.[6][7] The first version v1.0 was released on 9 August 2007, and the latest version, v3.0.0, was released on 21 December 2024.[8]

Software architecture

Modules

SFML consists of various modules:

While the graphics module is one of the main features of SFML, developers who are interested in only creating an environment to program directly in OpenGL can do so by using the Window module on its own without the graphics module. Similarly, the other modules can also be used independently of each other, except for the System module which is used by all of the modules.

Language bindings

SFML is written in C++ and provides a C++ interface (it also provides a C interface through the official CSFML binding). Several language bindings exist that enable using SFML in other programming languages.[3]

This table lists supported bindings for SFML as of 2024Script error: No such module "Check for unknown parameters"..

Name Language Supported version
ASFML Ada 2.6
CSFML1 C 2.6
BeefSFML Beef 2.5
SFML.Net1 .NET 2.6
CrSFML Crystal 2.6
bindbc-sfml D 2.5
DSFML D 2.1
EuSFML2 Euphoria 2.4
csfml-fpc Free Pascal 2.5
go-sfml Go 2.5.1
GoSFML2 Go 2.0
Hackage Haskell 2.3
JSFML Java 2.2
CSFML.jl Julia 2.5.1
nim-csfml Nim 2.3
Ocsfml OCaml 2.2
OCaml-SFML OCaml 2.5.1
PasSFML Pascal 2.4
pySFML Python 2.3.2
rbSFML Script error: No such module "webarchive". Ruby 2.3.2
rust-sfml Rust 2.6.1
zig-sfml Zig 2.6.1
sfml.js Node.js 2.5.1
zukoSFML Zuko 2.5

1 Official bindings

Unofficial add-ons

SFML provides the basic functions on which higher-level software can be built. Add-on libraries exist that provide added support for graphical user interfaces (GUIs),[9][10] 2D lighting,[11] particle systems and animation,[12] video playback[13] and tilemaps.[14]

Example

This is a basic example of SFML given on the tutorial page, which draws a green circle.[15]

#include <SFML/Graphics.hpp>

import std;

using sf::Color;
using sf::CircleShape;
using sf::Event;
using sf::RenderWindow;
using sf::VideoMode;

int main() {
    RenderWindow window(VideoMode({200, 200}), "SFML works!");
    CircleShape shape(100.0f);
    shape.setFillColor(Color::Green);

    while (window.isOpen()) {
        while (const std::optional event = window.pollEvent()) {
            if (event->is<Event::Closed>()) {
                window.close();
            }
        }

        window.clear();
        window.draw(shape);
        window.display();
    }
}

Reception and adoption

SFML is primarily used by hobbyist game developers, small independent video game developers, and startup companies consisting of several developers at most. Because SFML does not require writing large amounts of code, it has also been adopted by many Ludum Dare participants.[16] Compared to older libraries such as Simple DirectMedia Layer (SDL) and Allegro, the SFML user base is relatively small but growing. As of 25 December 2024Script error: No such module "Check for unknown parameters"., its GitHub software repository has been starred by over 10,000 users.[17]

SFML has been used in teaching at universities and in scientific projects.[18][19][20][21][22][23]

Video game use examples

Further examples of games using SFML are listed on IndieDB.[50]

Other software use

See also

Lua error in mw.title.lua at line 404: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

Page Template:Div col/styles.css has no content.

Script error: No such module "Check for unknown parameters".

References

Page Template:Reflist/styles.css has no content.

  1. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  2. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  3. ^ a b Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  4. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  5. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  6. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  7. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  8. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  9. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  10. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  11. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  12. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  13. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  14. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  15. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  16. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  17. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  18. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  19. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  20. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  21. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  22. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  23. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  24. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  25. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  26. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  27. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  28. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  29. ^ a b Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  30. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  31. ^ a b Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  32. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  33. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  34. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  35. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  36. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  37. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.Lua error in package.lua at line 80: module 'Module:Category handler/data' not found.Lua error in package.lua at line 80: module 'Module:Category handler/data' not found.[dead link]Script error: No such module "Check for unknown parameters".
  38. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  39. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  40. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  41. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  42. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  43. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  44. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  45. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  46. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  47. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  48. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  49. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  50. ^ sfml/games
  51. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  52. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  53. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  54. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  55. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.

Script error: No such module "Check for unknown parameters".

Further reading

  • Script error: No such module "Official website".Script error: No such module "Check for unknown parameters".
  1. REDIRECT Template:GitHub

Template:Redirect category shell


Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found.