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辅助编程,代 码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。