ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Renderer.h
浏览该文件的文档.
1#pragma once
2
3#include <memory>
4#include <optional>
5#include <SDL3/SDL_render.h>
6#include <SDL3/SDL_timer.h>
7
8#include "../Core/Core.h"
9#include "../Math.h"
10
11namespace Shit {
12 class Sprite;
13 class CameraComponent;
14
21 class SHIT_API Renderer final {
22 public:
23 Renderer(const Renderer&) = delete;
24 Renderer& operator=(const Renderer&) = delete;
25 Renderer(Renderer&&) = default;
27
28 // --- 静态API ---
30 static bool Init() { return GetInstance().init(); }
31 static void ClearScreen() { GetInstance().clearScreen(); }
32 static void Present() { GetInstance().present(); }
33 static SDL_Renderer* GetRenderer() { return GetInstance().m_renderer.get(); }
34
35 static int GetLogicalWidth() { return GetInstance().m_logicalWidth; }
36 static int GetLogicalHeight() { return GetInstance().m_logicalHeight; }
37
44 static void DrawSprite(const Sprite& sprite, const Vector2& position, const std::optional<Vector2>& size = std::nullopt);
45
46 private:
47 Renderer() = default;
48 ~Renderer() = default;
49
50 bool init();
51 void clearScreen();
52 void present();
53
54 struct SDLRendererDeleter {
55 void operator()(SDL_Renderer* renderer) const {
56 if (renderer) SDL_DestroyRenderer(renderer);
57 }
58 };
59
60 std::unique_ptr<SDL_Renderer, SDLRendererDeleter> m_renderer;
61 int m_logicalWidth = 1280;
62 int m_logicalHeight = 720;
63 };
64}
#define SHIT_API
定义 Core.h:12
相机组件,定义"从哪个角度观察世界"
定义 CameraComponent.h:15
static void ClearScreen()
清屏(每帧开头调用)
定义 Renderer.h:31
Renderer & operator=(const Renderer &)=delete
static SDL_Renderer * GetRenderer()
获取原生 SDL_Renderer
定义 Renderer.h:33
static void DrawSprite(const Sprite &sprite, const Vector2 &position, const std::optional< Vector2 > &size=std::nullopt)
在屏幕坐标直接绘制精灵(UI 场景用)
Renderer(Renderer &&)=default
Renderer & operator=(Renderer &&)=default
static Renderer & GetInstance()
Renderer(const Renderer &)=delete
static int GetLogicalWidth()
逻辑分辨率宽度
定义 Renderer.h:35
static void Present()
交换缓冲区(每帧末尾调用)
定义 Renderer.h:32
static int GetLogicalHeight()
逻辑分辨率高度
定义 Renderer.h:36
static bool Init()
初始化渲染器
定义 Renderer.h:30
精灵数据,描述"画什么"
定义 Sprite.h:14
定义 AudioPlayer.h:9
glm::vec2 Vector2
定义 Math.h:5