A startup for it

This commit is contained in:
2025-11-22 22:16:58 +08:00
parent 6703ebfcd2
commit 5100aa799f
15 changed files with 238 additions and 49 deletions

53
src/ui/Render.cpp Normal file
View File

@@ -0,0 +1,53 @@
#include "Render.h"
Renderer::Renderer(int WIDTH, int HEIGHT) : Width(WIDTH), Height(HEIGHT) {
}
Renderer::Renderer() : Width(1600), Height(900) {
}
Renderer::~Renderer() {
if (m_renderer) SDL_DestroyRenderer(m_renderer);
if (m_window) SDL_DestroyWindow(m_window);
}
bool Renderer::initialize() {
// 创建窗口支持高DPI和横屏[3,4](@ref)
m_window = SDL_CreateWindow(
"孢子棋", // 窗口标题,显示在标题栏上
Width, // 窗口的逻辑宽度(例如 800用于统一布局不受屏幕 DPI 影响
Height, // 窗口的逻辑高度(例如 600
SDL_WINDOW_HIGH_PIXEL_DENSITY | // 启用高像素密度支持HiDPI/Retina确保在高分屏上画面清晰
SDL_WINDOW_RESIZABLE // 允许用户调整窗口大小(可拉伸)
);
if (!m_window) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"创建窗口失败: %s", SDL_GetError());
return false;
}
// 创建渲染器
m_renderer = SDL_CreateRenderer(m_window, nullptr); //自动选择合适渲染器,开启硬件加速和垂直同步
if (!m_renderer) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"创建渲染器失败: %s", SDL_GetError());
return false;
}
// 设置逻辑呈现模式,实现分辨率自适应[3](@ref)
SDL_SetRenderLogicalPresentation(m_renderer,
Width,
Height,
SDL_LOGICAL_PRESENTATION_LETTERBOX);
SDL_SetWindowSize(m_window, Width, Height);
return true;
}
void Renderer::Renderhello() {
SDL_SetRenderDrawColor(m_renderer, 0, 0, 0, 255);
SDL_RenderClear(m_renderer);
SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255);
SDL_RenderPresent(m_renderer);
}

20
src/ui/Render.h Normal file
View File

@@ -0,0 +1,20 @@
#pragma once
#include <SDL3/SDL.h>
class Renderer
{
private:
SDL_Window* m_window = nullptr;
SDL_Renderer* m_renderer = nullptr;
int Width;
int Height;
public:
Renderer(int WIDTH, int HEIGHT);
Renderer();
~Renderer();
bool initialize();
void Renderhello();
};