O'Reilly logo

Mastering SFML Game Development by Raimondas Pupius

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Localizing rendering

Shading is a powerful concept. The only problem with injecting a stream of extra-graphical-fanciness to our game at this point is the fact that it is simply not architected to deal with using shaders efficiently. Most, if not all of our classes that do any kind of drawing do so by having direct access to the sf::RenderWindow class, which means they would have to pass in their own shader instances as arguments. This is not efficient, re-usable, or flexible at all. A better approach, such as a separate class dedicated to rendering, is a necessity.

In order to be able to switch from shader to shader with relative ease, we must work on storing them properly within the class:

using ShaderList = std::unordered_map<std::string, std::unique_ptr<sf::Shader>>; ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required