FPS 60 FRAME 16.67 ms DRAW 0
VIEWPORT 100% BACKEND OpenGL 3.3 COORD —
xge_shape_ex · bezier / gradient / stroke / mask
C99 · zero-dep · single DLL · 2D+3D
~/xge $

RENDER EVERYPIXEL

XGE 是一款纯 C 编写的跨平台 2D/3D 图形引擎。内置完整 SVG 渲染管线、 高级矢量路径系统、glTF 3D 管线与 80+ 控件的 XUI 框架——从一条贝塞尔曲线到一整套桌面级界面,再到一座程序化岛屿。

C99OpenGL 3.3 / GLES 3.0 / WebGL2SVG 1.1 3D · glTF 2.080+ Widgetsminiaudio8 平台
SCROLL
xgeShapeExFillLinearGradientxgeSvgLoadxuiButtonCreate xge3dModelLoadxgeFontLoadXRFxuiDockPanelCreate xgeShapeExStrokeDashxge3dLightDefaultxuiCodeEditCreate xgeShapeExMaskSceneSetxge3dAnimatorCreatexuiTerminalCreate xgeShapeExTrimPathxge3dTerrainCreatexuiChartCreate xgeShapeExFillLinearGradientxgeSvgLoadxuiButtonCreate xge3dModelLoadxgeFontLoadXRFxuiDockPanelCreate xgeShapeExStrokeDashxge3dLightDefaultxuiCodeEditCreate xgeShapeExMaskSceneSetxge3dAnimatorCreatexuiTerminalCreate xgeShapeExTrimPathxge3dTerrainCreatexuiChartCreate
Core Capabilities

为精确渲染而生的
完整能力矩阵

从底层 GPU 批渲染到上层 UI 控件,每一层都由同一套 C 代码驱动,无运行时依赖、无虚拟机。

01
Vector Path Engine

高级矢量路径系统

21,800 行 shape_ex 引擎:贝塞尔曲线、椭圆弧、线性/径向渐变、虚线描边、路径裁剪、Alpha/Luma 遮罩、Trim Path 与高斯模糊——一条 API 链路贯穿始终。

xgeShapeExCubicToxgeShapeExArcToxgeShapeExStrokeDash xgeShapeExMaskShapeSetxgeShapeExTrimPath
SVG Pipeline

完整 SVG 引擎

22,000 行自研解析与渲染器,支持渐变、裁剪、滤镜与 preserveAspectRatio,可直接光栅化到纹理。

Gradient & Paint

渐变与绘制秩序

用户空间 / 对象边界盒两种渐变单位,Pad / Reflect / Repeat 扩散模式,Paint Order 可控。

Stroke Engine

描边与虚线

Miter / Round / Bevel 连接,Non-scaling 描边与路径动画。

Audio

三级音频系统

Sound / Music / Stream 分层,音频组、淡入淡出与 3D 定位,基于 miniaudio。

Typography

字体与排版

TTF 实时光栅化 + 自研 XRF 位图字体,字形图集缓存、字距调整与文本装饰线。

6内建语言
XRF自研字体格式
Atlas字形图集
3D Pipeline

3D 渲染管线

glTF 2.0 模型、PBR 材质、方向/点/聚光直接光照、级联阴影、静态 IBL、骨骼动画与根运动、拾取与天空——105 个公开 C API,与 2D 共用同一套窗口、输入与资源底座。

xge3dModelLoadxge3dLightDefaultxge3dAnimatorCreate xge3dFogDefaultxge3dSceneRaycast
Terrain & Sky

地形 · 雾 · 天空

分块高度场(U16/F32)带 1-4 级 LOD 与裙边,三角形级高度采样与射线查询;线性距离雾与立方图天空。

Build Profiles

可裁剪构建

七个构建档位按需产出:从纯 2D 到全功能。65 个控件开关、8 个 3D 子模块开关,依赖冲突在编译期报错。

7构建档位
65控件开关
853KiB3D 档 DLL
API as Documentation

一致的 C API,
读一遍就会写

所有模块遵循同一命名约定与错误码体系,句柄即指针,结构体即配置。没有隐藏状态,没有魔法。

02
// 一个窗口,三行代码
xge_desc_t desc = {0};
desc.iWidth  = 1280;
desc.iHeight = 720;
desc.sTitle  = "Hello XGE";
desc.iFlags  = XGE_INIT_RESIZABLE | XGE_INIT_HIGHDPI;

xgeInit(&desc);
xgeRun(onFrame, NULL);
xgeUnit();
xge_shape_ex pShape;
xgeShapeExCreate(&pShape);

// 构建一条带圆角的闭合路径
xgeShapeExAppendCapsule(pShape, 80, 80, 240, 64, 1);

// 线性渐变填充 + 虚线描边
xge_shape_ex_color_stop_t stops[] = {
    { 0.0f, 0xFFB454FF }, { 1.0f, 0xFF6B5EFF }
};
xgeShapeExFillLinearGradient(pShape, 80,80,320,144,
    XGE_SHAPE_EX_GRADIENT_USER_SPACE, stops, 2);
xgeShapeExStrokeWidth(pShape, 2.0f);

xgeShapeExDraw(pShape, 0.25f);
xgeShapeExDestroy(pShape);
xge_svg pSvg;
xgeSvgCreate(&pSvg);
xgeSvgLoad(pSvg, "icon.svg");

// 按目标矩形绘制,自动处理 viewBox 与纵横比
xge_rect_t dst = { 100, 100, 256, 256 };
xgeSvgDraw(pSvg, dst, 0.25f);

// 或直接光栅化进纹理
xgeSvgTextureLoad(pTex, "icon.svg", 512, 512);
xge3d_scene*pScene;
xge3dSceneCreate(&pScene);

// 加载 glTF 模型并实例化进场景
xge3d_model *pModel;
xge3dModelLoad("explorer.gltf", &pModel);
xge3d_node_t root;
xge3dModelInstantiate(pScene, pModel, 0, &root);

// 平行光 + 阴影 + 天空
xge3d_node_t tLightNode;
xge3dNodeCreate(pScene, 0, &tLightNode);
xge3d_light_desc_t tLight = xge3dLightDefault(XGE3D_LIGHT_DIRECTIONAL);
xge3dNodeSetLight(pScene, tLightNode, &tLight);

// 渲染一帧
xge3d_camera_t tCam;
xge3dCameraPerspective(&tCam, 1.2f, 16.0f/9.0f, 0.1f, 500.0f);
xge3dCameraLookAt(&tCam, tEye, tTarget, tUp);
xge3dRender(pRenderer, pScene, &tDesc, NULL);
// XUI 通过渲染代理与 XGE 解耦
xui_context pContext;
xuiCreate(&pContext);
xuiSetProxy(pContext, &tProxy);
xuiWidgetCreate(pContext, &pRoot);

xui_button_desc_t btn = {0};
btn.sText = "开始渲染";
xuiButtonCreate(pContext, &pButton, &btn);

// 事件:捕获 → 目标 → 冒泡
xuiWidgetSetEventCallback(pButton, onClick, NULL);
xge_music_t tMusic;
xgeMusicLoad(&tMusic, "bgm.ogg");
xgeMusicSetLoop(&tMusic, 1);
xgeMusicPlay(&tMusic);

// 两秒内淡入到 80% 音量
xgeMusicFade(&tMusic, 0.0f, 0.8f, 2000);

句柄即指针,
结构体即配置。

所有创建型 API 返回 int 错误码,输出参数前置;所有资源都有显式的 AddRef / Free 生命周期。调试器里看到的,就是真实发生的。

XUI Framework

60+ 控件,
覆盖桌面级应用场景

从按钮、输入框到代码编辑器、终端、图表与Dock面板——同一套布局、样式与事件系统驱动全部控件。

03
BASICButton按钮 · 语义 · 徽章
BASICCheckbox复选框
BASICRadio单选框 · 分组
BASICToggle开关
BASICSlider滑动条
BASICRangeSlider范围滑动
BASICInput输入框 · 图标 · 装饰
BASICNumericInput数字输入
BASICTagInput标签输入
BASICLabel文本标签
BASICImage图片 · 适配模式
BASICProgress进度条
NAVMenu上下文菜单
NAVMenuBar菜单栏
NAVToolbar工具栏
NAVTabs选项卡
NAVBreadcrumb面包屑
NAVStepBar步骤条
NAVAccordion手风琴
NAVPage分页器
NAVStatusBar状态栏
DATAListView列表视图 · 虚拟化
DATATreeView树形视图
DATATableView表格视图
DATATableGrid数据网格
DATAPropertyGrid属性网格
DATAChart图表
DATAComboBox组合框
DATACascader级联选择
DATADatePicker日期选择
DATAColorPicker颜色选择
FEEDBACKMessageBox消息对话框
FEEDBACKToast轻提示
FEEDBACKMsgTip消息提示
FEEDBACKTooltip工具提示
FEEDBACKPopup弹出层
FEEDBACKWindow窗口
EDITORTextEdit多行文本编辑
EDITORDocument富文本 · Markdown · 修订
EDITORCodeEdit代码编辑器 · 词法
EDITORTerminal终端模拟器
EDITORFileDialog文件对话框
PRODockPanel停靠面板 · 浮动
PROSplitLayout分割布局
PROTimelineView时间轴 · 关键帧
PROFlowGraph流程图画布
PROWorkflow工作流编辑器
PROMessageList消息列表 · 会话
PROInventoryGrid物品栏 · 游戏
PROVirtualJoystick虚拟摇杆
PROCarousel轮播
PROQRCode二维码

当前展示 51 个控件 · 全部控件均配备独立单元测试与可运行示例

One Codebase

一份 C 代码,
跑遍八个平台

平台层与 GPU 层完全解耦:桌面走 Sokol + OpenGL,嵌入式走 EGL,Web 走 WebGL2,小程序走自研桥接。

04
🪟Windowssokol_app · Win32
GLCORE 3.3 · DLL 输出
macOSsokol_app · Cocoa
GLCORE / Metal
🐧Linuxsokol_app · X11 / Wayland
GLCORE 3.3
🤖Androidsokol_app · NDK
GLES 3.0 · APK 打包脚本
📱iOSsokol_app · UIKit
GLES 3.0 / Metal · 模拟器脚本
🌐WebEmscripten · WASM
WebGL2 · 本地伺服脚本
💬小程序自研桥接层
WebGL2 · 触控/音频转发
🔌嵌入式 LinuxEGL 直连
PBuffer / Surfaceless · 开发板
Layered Design

分层架构,
每层都可单独使用

XUI 通过渲染代理调用 XGE,XGE 通过平台后端调用系统——任何一层都可以被替换或单独嵌入你的项目。

05
应用层APPLICATION
你的游戏 / 工具 / 应用场景栈 · 帧循环 · 资源
Examples114 个可运行示例
UI 层XUI
Widget 树布局 · 样式 · 事件
80+ 控件输入 · 数据 · 编辑器
渲染代理能力位声明
引擎层XGE CORE
Shape / ShapeEx矢量路径 · 渐变 · 遮罩
SVG 引擎解析 · 渲染 · 光栅化
3D CoreglTF · 光照 · 地形 · 动画
Font / Text字形图集 · 排版
Audio / Asyncminiaudio · 线程加载
渲染层RENDER
Sprite / Shape Batch批渲染 · 脏矩形
Material / Shader变体系统
RenderTargetFBO · 离屏
平台层PLATFORM
SokolWin / mac / Linux / 移动
EGL嵌入式 Linux
WebGL2WASM
MiniProgram小程序桥接
0+行 C 代码
0+UI 控件
03D 公开 API
0目标平台
0行 SVG 引擎
0控件测试文件
Get Started

五分钟,
从克隆到第一帧

无需 CMake、无需包管理器。一条构建脚本产出单个 DLL,把 xge.h 拖进项目即可开始。

06

构建 DLL

Windows / MinGW-w64 环境,Release 与 Debug 双版本输出;七个构建档位按需裁剪。

$ build_dll.bat
[XGE] Building DLL resources...
[XGE] Building DLL...
[XGE] Build successful: build\xge.dll
[XGE] Import library: build\xge.lib
$ build_dll.bat 3d # 只带 3D 的裁剪档

运行 示例

每个示例都支持 --frames 自动化运行与截图捕获。

$ examples\xge_shape_ex\build.bat
$ build\xge_shape_ex.exe --frames 360
# 矢量渐变 · 描边 · 遮罩 · 特效综合演示
$ build\xui_dockpanel.exe --frames 360
# 停靠面板 · 浮动窗口 · 标签拖拽