LinaVG 是一个 2D 矢量图形库,提供低级功能来绘制各种抗锯齿凸形状和线条,以及传统和有符号距离场(SDF)文本渲染。LinaVG 还提供丰富的样式选项,包括渐变、轮廓、阴影、可变线宽、填充和非填充形状、文本对齐/间距等多种功能!

LinaVG 本身不提供"渲染"功能。它根据您的绘制调用生成缓冲区,并以优化的缓冲区批次将它们发送回您指定的自定义后端。
话虽如此,示例项目提供了一个 OpenGL 后端示例,您基本上可以直接复制粘贴使用。此外,Lina Engine 使用 LinaVG 并有自定义 DirectX12 后端的示例。更多详情请查看 Wiki。
LinaVG 的目的是为您提供一种简 单的方法来进行低级抗锯齿形状、线条和文本渲染。它不提供任何窗口管理或输入功能,也不是一个 GUI 库。它假设您的应用程序已经设置了图形渲染后端和应用程序循环。
考虑到这一点,您可以使用 LinaVG 构建保留模式和即时模式的 GUI 应用程序/库。
LinaVG 最初是为 Lina Engine 制作的,但这个库完全独立于它。您可以在自己的项目中使用 LinaVG,只需最少的依赖项。
LinaVG 已在以下环境测试:
只要没有多个线程修改同一个 LinaVG::Drawer 对象,LinaVG 就是线程安全的。目前唯一不是线程安全的全局函数是那些用于加载字体的函数,这些函数需要用互斥锁包装。

从 Releases 下载发布版本。
推荐使用 CMake 将 LinaVG 与您的应用程序一起链接。或者,您也可以自行构建 CMake 项目并链接生成的二进制文件,但请注意如果选择这种方式,您还需要链接生成的 FreeType 二进制文件。
使用 LINAVG_BUILD_EXAMPLES 选项构建示例项目。
cmake DLINAVG_BUILD_EXAMPLES=ON
使用 LINAVG_DISABLE_TEXT_SUPPORT 选项跳过文本支持和 FreeType 依赖。
cmake DLINAVG_DISABLE_TEXT_SUPPORT=ON
注意:LinaVG 需要 C++ 17 特性。
以下是使用 LinaVG 进行绘图的最基本实现步骤。如主页所述,假设您的应用程序已经设置并运行了图形渲染后端,当然还包括一个具有有效上下文的窗口。
#include "LinaVG.hpp" LinaVG::Drawer lvgDrawer; lvgDrawer.GetCallbacks().drawDefault = std::bind(&MyRenderingBackend::DrawDefault, &myRenderer, std::placeholders::_1); // 您的应用程序循环 while (m_applicationRunning) { // 设置样式,从红色到蓝色的渐变色 StyleOptions style; style.isFilled = true; style.color.start = Vec4(1, 0, 0, 1); style.color.end = Vec4(0, 0, 1, 1); // 从 (300, 300) 开始绘制一个 200x200 的矩形 const Vec2 min = Vec2(300, 300); const Vec2 max = Vec2(500, 500); lvgDrawer.DrawRect(min, max, style); lvgDrawer.FlushBuffers(); lvgDrawer.ResetFrame(); }
就是这么简单!

LinaVG 在使用、配置、其他形状/线条/文本和样式方面还有很多内容。查看 Wiki 的其余部分或示例应用程序以了解所有内容。
在遵守以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否经过修改:
源代码的再分发必须保留上述版权声明、本条件列表和以下免责声明。
以二进制形式再分发时,必须在随分发提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
本软件由版权所有者和贡献者"按原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。在任何情况下,版权持有人或贡献者均不对任何直接、间接、偶然、特殊、示例性或后果性损害(包括但不限于替代商品或服务的采购;使用 、数据或利润的损失;或业务中断)承担责任,无论是基于合同、严格责任还是侵权行为(包括疏忽或其他)的任何责任理论,即使事先被告知可能发生此类损害。
欢迎任何贡献和拉取请求。
您可以加入 Lina Engine的Discord频道 讨论Lina项目。


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无 需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae 具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站 式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

