Czym jest SFML – to prosta, otwarta i szybka biblioteka programistyczna działająca na wielu platformach. Służy przede wszystkim do pisania gier, wykorzystuje akcelerację sprzętową 2D przy użyciu OpenGL. Jest napisana w C++, również wykorzystywana jest w języku C, .Net, Pythonie oraz Javie. Biblioteka wyposażona jest w następujące moduły:
- System – obsługa czasu i wątków.
- Window – okna i interakcję z użytkownikiem.
- Graphics – grafiki i jej renderowanie na ekranie.
- Audio – muzyka i dźwięki.
- Network – komunikacja sieciowa.
Pobranie SFML
Link do strony.
Pliki dobrze wypakować do workspace gdzie będziemy robić projekt, aby łatwo go podlinkować i utrzymać porządek.
Dodawanie nowego projektu Visual Studio 2015
Wybieramy C++
projekt win32
jako Console Application
, następnie zaznaczamy Empty Project
i Odznaczamy SDL.
Następnie add new item i dodajemy plik main.cpp
Konfiguracja i dodawanie bibliotek.
Jeśli katalog z bibliotekami o nazwie SFML będzie różnorzędny z katalogiem projektu stworzonym przez VS to następnie w projekcie wybieramy Property
i C++->General
w Additional Include Directories
wpisujemy: $(SolutionDir)\..\SFML\include;
to znaczy że z pozycji katalogu projektu wycofamy się o jedną gałąź drzewa i wejdziemy do kolejnych katalogów.
Następnie przechodzimy do Linker
i General Additional Library Directories wpisujemy
$(SolutionDir)\..\SFML\lib;
Teraz należy przejść do Input
w liknerze i dodać wpisy w Additional Dependiencies
dla debug:
1 2 3 4 5 6 7 8 9 10 |
sfml-main-d.lib sfml-graphics-d.lib sfml-window-d.lib sfml-system-d.lib sfml-audio-d.lib opengl32.lib freetype.lib jpeg.lib winmm.lib gdi32.lib |
To wszystko, teraz można korzystać z bibliotek SFML.
Przykładowy kod do umieszczenia w main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <SFML\Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; } |
Wynik kodu: