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:
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
#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: