Initial engine repository
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#pragma once
|
||||
|
||||
namespace frostbite2D {
|
||||
|
||||
/**
|
||||
* @brief 2D 渲染风格预设 ID
|
||||
*/
|
||||
enum class RenderStyleProfileId {
|
||||
PixelArt2D, ///< 世界与 UI 都按像素风策略渲染
|
||||
Smooth2D, ///< 世界与 UI 都按平滑 2D 策略渲染
|
||||
Hybrid2D ///< 世界走像素风,UI 走平滑策略
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 渲染风格作用层级
|
||||
*/
|
||||
enum class RenderStyleLayerRole {
|
||||
World, ///< 世界层,如地图、角色、场景特效
|
||||
UI ///< UI 层,如 HUD、菜单、文字
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 单个层级的渲染风格开关集合
|
||||
*/
|
||||
struct RenderStyleLayerSettings {
|
||||
bool cameraPixelSnap = false; ///< 是否让相机位置吸附到像素网格
|
||||
bool vertexPixelSnap = false; ///< 是否让世界顶点在提交前做像素对齐
|
||||
bool pixelArtSampling = false; ///< 是否优先使用像素风采样(如 GL_NEAREST)
|
||||
bool shrinkSubTextureUVs = false; ///< 是否对子纹理 UV 做向内收缩,减轻图集边缘闪烁
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 一套完整的 2D 渲染风格设置
|
||||
*/
|
||||
struct RenderStyleSettings {
|
||||
RenderStyleLayerSettings world; ///< 世界层使用的渲染风格
|
||||
RenderStyleLayerSettings ui; ///< UI 层使用的渲染风格
|
||||
|
||||
/**
|
||||
* @brief 根据预设 ID 生成对应的渲染风格
|
||||
*/
|
||||
static RenderStyleSettings FromProfile(RenderStyleProfileId profile) {
|
||||
RenderStyleSettings settings;
|
||||
|
||||
switch (profile) {
|
||||
case RenderStyleProfileId::PixelArt2D:
|
||||
settings.world = {true, true, true, true};
|
||||
settings.ui = {true, true, true, true};
|
||||
break;
|
||||
case RenderStyleProfileId::Smooth2D:
|
||||
settings.world = {false, false, false, false};
|
||||
settings.ui = {false, false, false, false};
|
||||
break;
|
||||
case RenderStyleProfileId::Hybrid2D:
|
||||
default:
|
||||
settings.world = {true, true, true, true};
|
||||
settings.ui = {false, false, false, false};
|
||||
break;
|
||||
}
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取指定层级对应的风格设置
|
||||
*/
|
||||
const RenderStyleLayerSettings& layer(RenderStyleLayerRole role) const {
|
||||
return role == RenderStyleLayerRole::UI ? ui : world;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace frostbite2D
|
||||
Reference in New Issue
Block a user