feat: draw_scene now requires a RenderStates argument

This commit is contained in:
Sara Gerretsen 2025-09-04 22:19:03 +02:00
parent 73248c3780
commit 42d5596e60
3 changed files with 15 additions and 5 deletions

View file

@ -1,3 +1,5 @@
#include "SFML/Graphics/RectangleShape.hpp"
#include "SFML/Graphics/RenderStates.hpp"
#include "defs.h" #include "defs.h"
#include <SFML/Graphics.hpp> #include <SFML/Graphics.hpp>
#include <SFML/Window.hpp> #include <SFML/Window.hpp>
@ -22,7 +24,11 @@ void setup() {
void loop() { void loop() {
} }
void draw_scene(sf::RenderTarget &target) { void draw_scene(sf::RenderTarget &target, sf::RenderStates const &states) {
static sf::RectangleShape rect{ { 300, 300 } };
sf::RenderStates n_states{states};
n_states.transform.translate({ 20, 20 });
target.draw(rect, n_states);
} }
static bool dockspace = true; static bool dockspace = true;

View file

@ -4,11 +4,13 @@
#include <optional> #include <optional>
#include <SFML/System/String.hpp> #include <SFML/System/String.hpp>
#include <SFML/Window/VideoMode.hpp> #include <SFML/Window/VideoMode.hpp>
#include <SFML/Graphics/RenderStates.hpp>
struct AppConfig { struct AppConfig {
sf::String window_title{ "UNNAMED WINDOW" }; sf::String window_title{ "UNNAMED WINDOW" };
sf::VideoMode mode{{ 1280, 720 }}; sf::VideoMode mode{ { 1280, 720 } };
bool vsync{}; sf::RenderStates default_render_states{sf::RenderStates::Default};
bool vsync{false};
std::optional<int> frame_rate_limit{std::nullopt}; std::optional<int> frame_rate_limit{std::nullopt};
}; };

View file

@ -12,6 +12,7 @@ static sf::View view{};
extern void configure(AppConfig &config); extern void configure(AppConfig &config);
void initialize_window() { void initialize_window() {
cfg = AppConfig();
configure(cfg); configure(cfg);
window.create(cfg.mode, cfg.window_title); window.create(cfg.mode, cfg.window_title);
if (cfg.frame_rate_limit) if (cfg.frame_rate_limit)
@ -40,8 +41,8 @@ void poll_events() {
} }
extern void setup(void); extern void setup(void);
extern void loop(void); extern void loop(double delta);
extern void draw_scene(sf::RenderTarget &target); extern void draw_scene(sf::RenderTarget &target, sf::RenderStates const &states);
extern void draw_main_menu_bar(void); extern void draw_main_menu_bar(void);
extern void draw_gui(void); extern void draw_gui(void);
@ -63,6 +64,7 @@ int main() {
draw_gui(); draw_gui();
// Render // Render
window.clear(); window.clear();
draw_scene(window, cfg.default_render_states);
ImGui::SFML::Render(window); ImGui::SFML::Render(window);
window.display(); window.display();
} }