ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
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
11
namespace
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
;
26
Renderer
&
operator=
(
Renderer
&&) =
default
;
27
28
// --- 静态API ---
29
static
Renderer
&
GetInstance
();
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
}
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:12
Math.h
Shit::CameraComponent
相机组件,定义"从哪个角度观察世界"
定义
CameraComponent.h:15
Shit::Renderer::ClearScreen
static void ClearScreen()
清屏(每帧开头调用)
定义
Renderer.h:31
Shit::Renderer::operator=
Renderer & operator=(const Renderer &)=delete
Shit::Renderer::GetRenderer
static SDL_Renderer * GetRenderer()
获取原生 SDL_Renderer
定义
Renderer.h:33
Shit::Renderer::DrawSprite
static void DrawSprite(const Sprite &sprite, const Vector2 &position, const std::optional< Vector2 > &size=std::nullopt)
在屏幕坐标直接绘制精灵(UI 场景用)
Shit::Renderer::Renderer
Renderer(Renderer &&)=default
Shit::Renderer::operator=
Renderer & operator=(Renderer &&)=default
Shit::Renderer::GetInstance
static Renderer & GetInstance()
Shit::Renderer::Renderer
Renderer(const Renderer &)=delete
Shit::Renderer::GetLogicalWidth
static int GetLogicalWidth()
逻辑分辨率宽度
定义
Renderer.h:35
Shit::Renderer::Present
static void Present()
交换缓冲区(每帧末尾调用)
定义
Renderer.h:32
Shit::Renderer::GetLogicalHeight
static int GetLogicalHeight()
逻辑分辨率高度
定义
Renderer.h:36
Shit::Renderer::Init
static bool Init()
初始化渲染器
定义
Renderer.h:30
Shit::Sprite
精灵数据,描述"画什么"
定义
Sprite.h:14
Shit
定义
AudioPlayer.h:9
Shit::Vector2
glm::vec2 Vector2
定义
Math.h:5
ShitEngine
Render
Renderer.h
制作者
1.17.0