summaryrefslogtreecommitdiff
path: root/app/sdl/impl/display-sdl.hh
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-02-07 22:15:57 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-02-07 22:15:57 +0100
commit0de4957a22dd408793d0526351bcb7d61786fe86 (patch)
tree3160c72a45022b1e0b7e5ab928c690e85e20cded /app/sdl/impl/display-sdl.hh
parenta6bfb14562982c8c0139566e5a9b3051543791c4 (diff)
add sdl implementation
Diffstat (limited to 'app/sdl/impl/display-sdl.hh')
-rw-r--r--app/sdl/impl/display-sdl.hh24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/sdl/impl/display-sdl.hh b/app/sdl/impl/display-sdl.hh
new file mode 100644
index 0000000..9310eca
--- /dev/null
+++ b/app/sdl/impl/display-sdl.hh
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "nes/common/display.hh"
+
+#include <SDL3/SDL.h>
+
+namespace nes::app::sdl
+{
+ /// Display implementation rendering contents into an SDL texture.
+ class display_sdl final : public display
+ {
+ SDL_Texture* texture_{ nullptr };
+ u32 buffer_back_[width * height]{};
+
+ public:
+ explicit display_sdl() = default;
+
+ auto get_texture() const -> SDL_Texture* { return texture_; }
+ auto set_texture(SDL_Texture* v) -> void { texture_ = v; }
+
+ auto switch_buffers() -> void override;
+ auto set(u32 x, u32 y, rgb value) -> void override;
+ };
+} // namespace nes::app::sdl