Mastering SFML — 3D Game Development
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 C, Crystal, D, Euphoria, Go, Java, Julia, .NET, Nim, OCaml, Python, Ruby, and Rust. Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2.

Introduction of o SFML
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 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.[5][6] The first version v1.0 was released on 9 August 2007, the latest version v2.5.1 was released on 15 Oct 2018.
SFML consists of various modules:
- System — vector and Unicode string classes, portable threading and timer facilities
- Window — window and input device management including support for joysticks, OpenGL context management
- Graphics — hardware acceleration of 2D graphics including sprites, polygons and text rendering
- Audio — hardware-accelerated spatialised audio playback and recording
- Network — TCP and UDP network sockets, data encapsulation facilities, HTTP and FTP classes
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.
SFML is written in C++ and provides a C++ interface. Several language bindings exist that enable using SFML in other programming languages.
3D Game Programming All-in-One Book
3D Game Programming All-In-One Book is certainly not for the beginner, but if you give it time and go through some of the downloaded code it can help a lot. This book teaches a VERY good method of creating a foundation for any kind of 3D game you can think of and most importantly teaches to fundamentals of state stacks (best thing i’ve learned so far). Excellent book, do skip it!