5#include <SDL3/SDL_render.h>
6#include <SDL3/SDL_timer.h>
70 static void DrawTexture(SDL_Texture* texture,
const SDL_FRect* src,
const SDL_FRect& dst);
72 double angle,
const SDL_FPoint* center, SDL_FlipMode flip);
84 bool readPixels(
void* pixels,
int pitch);
85 bool beginOffscreen();
89 SDL_Renderer* raw()
const {
return m_renderer ? m_renderer.get() :
nullptr; }
91 struct SDLRendererDeleter {
92 void operator()(SDL_Renderer* renderer)
const {
93 if (renderer) SDL_DestroyRenderer(renderer);
97 std::unique_ptr<SDL_Renderer, SDLRendererDeleter> m_renderer;
98 int m_logicalWidth = 1280;
99 int m_logicalHeight = 720;
101 struct SDLTextureDeleter {
102 void operator()(SDL_Texture* texture)
const {
103 if (texture) SDL_DestroyTexture(texture);
106 std::unique_ptr<SDL_Texture, SDLTextureDeleter> m_offscreenTarget;
#define SHIT_API
定义 Core.h:14
相机组件,定义"从哪个角度观察世界"
定义 CameraComponent.h:16
static void ClearScreen()
清屏(每帧开头调用)
定义 Renderer.h:32
static bool BeginOffscreen()
开始离屏渲染到逻辑尺寸(1280×720)目标纹理(编辑器预览用) 之后 SceneManager::Update 的渲染进该纹理;ReadPixels 读出逻辑尺寸像素, 与相机坐标空间一致(不受窗口...
定义 Renderer.h:49
Renderer & operator=(Renderer &&)=delete
Renderer(Renderer &&)=delete
static void DrawTextureRotated(SDL_Texture *texture, const SDL_FRect *src, const SDL_FRect &dst, double angle, const SDL_FPoint *center, SDL_FlipMode flip)
旋转/翻转绘制(SDL_RenderTextureRotated)
Renderer & operator=(const Renderer &)=delete
static SDL_Renderer * GetRenderer()
获取原生 SDL_Renderer
定义 Renderer.h:34
static void ClearClipRect()
清除裁剪矩形
static void SetDrawColor(const Color &color)
设置绘制颜色(SDL_SetRenderDrawColor)
static void DrawSprite(const Sprite &sprite, const Vector2 &position, const std::optional< Vector2 > &size=std::nullopt)
在屏幕坐标直接绘制精灵(UI 场景用)
static void SetViewport(const SDL_Rect *viewport)
设置视口(传 nullptr 恢复全屏)
static void Destroy()
析构渲染器(必须在 SDL_Quit 之前调用)
定义 Renderer.h:31
static Renderer & GetInstance()
Renderer(const Renderer &)=delete
static void DrawTexture(SDL_Texture *texture, const SDL_FRect *src, const SDL_FRect &dst)
绘制纹理(SDL_RenderTexture)
static void RenderCoordinatesToWindow(float x, float y, float *winX, float *winY)
逻辑坐标 → 窗口物理像素坐标
static void ClearViewport()
恢复全屏视口
static void FillRect(const SDL_FRect &rect)
实心矩形(SDL_RenderFillRect)
static int GetLogicalWidth()
逻辑分辨率宽度
定义 Renderer.h:52
static void Present()
交换缓冲区(每帧末尾调用)
定义 Renderer.h:33
static SDL_Texture * CreateTextureFromSurface(SDL_Surface *surface)
surface → texture(SDL_CreateTextureFromSurface)
friend class EngineContext
定义 Renderer.h:77
static void SetClipRect(const SDL_Rect *rect)
设置裁剪矩形(传 nullptr 清除)
static int GetLogicalHeight()
逻辑分辨率高度
定义 Renderer.h:53
static void EndOffscreen()
定义 Renderer.h:50
static bool Init()
初始化渲染器
定义 Renderer.h:30
static bool ReadPixels(void *pixels, int pitch)
读取渲染缓冲像素(离屏渲染/编辑器预览用)
定义 Renderer.h:42
精灵数据,描述"画什么"
定义 Sprite.h:14
glm::vec2 Vector2
定义 Math.h:5
RGBA 颜色(每通道 8 位)
定义 Core.h:26