建议大家多逛逛GitHub,特别是DevWeekly,它每周都会筛选一些优秀的开源项目、开源工具、技术文章等,可以多去看看。接下来不废话了,列举一些我认为较好的C++图形库,希望对大家学习有帮助。
NanoVG
NanoVG是一个2D图形库,一个小型的OpenGL抗锯齿矢量图形渲染库。它有精简的API,模仿HTML5画布API。它旨在成为一个实用而有趣的工具集,用于构建可扩展的用户界面和可视化。
整个库就一个.C文件,代码行数不到5000行,支持文字渲染,市面上有的功能大多都已经实现。
这个库唯一不足之处就是性能,在低端的Android和大屏幕上,界面上每秒钟只有十几帧。
NanoGUI
NanoGUI在NanoVG库的基础上支持自动布局、能够回调有状态的lambda,支持Apple设备渲染(Retina)。
主要用于GLES2/3、OpenGL3+、Metal等平台工具。
Intermediate Graphics Library(IGL)
IGL由Metal公司在2023年7月28日进行开源,是一个跨平台的命令GPU库。它用一个低级的跨平台接口封装了常见的GPU功能。
IGL设计目的是支持在各种图形api(例如OpenGL,WebGL,Metal和Vulkan)之上实现多个后端,并使用一个通用接口。
RmlUI
RmlUI是一个基于HTML+CSS的轻量级和高性能库,主要目的是解决项目的界面开发需求;它属于libRocket的一个分支,对外部依赖较少,并且拥有自己的布局引擎。
RmlUI的主要工作原理:获取你的HTML和CSS文件,将它们转换为索引、顶点和绘制命令,然后再通过内部渲染器绘制。
U++
U++ 承诺从根本上降低典型桌面应用程序的代码复杂性。
ImGUI
ImGui是一个用C++编写的即时模式图形用户界面,具有各种图形 API(Allegro 5、DirectX、GLFW、iOS、Marmalade、Metal、OpenGL、SDL2 和 Vulkan的后端。
SmartWin++
遵循BSD许可协议的C++ GUI库,建立在Windows API之上,但仍可以通过使用WineLib在Linux/xNix上使用。也支持Pocket PC和基于Windows CE的应用程序...
Elements
Elements是一个轻量级、模块化、独立的库,在任何应用程序中都可以使用它。
XCLASS
XCLASS库是X Windows环境中的一个C++ GUI工具包的。它是基于Xlib的,由一套组件,包括从简单部件到复杂的,其中也包括许多常用的对话框。组件有MS Windows外观风格。
Windows++
Windows++是一个轻量级的C++应用程序框架,它可以让你的C++程序中使用窗口
FOX
FOX是一个C++开发图形用户界面库,方便和有效的基础工具包。
cocos2d-x
Cocos2d-x是一个多平台框架,用于构建2d游戏,互动书籍,演示和其他图形应用程序。它基于cocos2d-iphone,但它使用的不是Objective-C,而是C++。它适用于IOS、Android、macOS、Windows和Linux。
在功能上包含效果、动作、引擎、按钮、菜单、动画、字体等,支持力度非常大。
V C++ GUI框架
V是一个免费的可移植的C++的图形用户界面框架,旨在开发出各种不同的图形界面平台上的应用程序。
wxWidgets
一个开源的C++ GUI框架,使跨平台的编程变得简单。
wxWidgets(/wɪksˈwɪdʒɪts/,原名wxWindows[2])是一个开放源代码且跨平台用来创建图形用户界面(GUI)的对象工具集(widget toolkit)程序库。wxWidgets原创是由Julian Smart于1992年在爱丁堡大学首先开发。
wxWidgets使采用其库所开发的图形接口软件只需要对源代码做少量更改(或者完全不用更改),就能在各种不同的作业平台上编译并执行。目前可支持Windows、Apple Macintosh、Linux/Unix(转译成X11、GTK+、Motif等库)、OpenVMS、以及OS/2,入式的版本也正在开发中。
库本身使用C++语言开发,但也有其它不同编程语言的绑扎,例如:Python(wxPython)、Lua(wxlua)、Perl(wxPerl)、Ruby(wxRuby)、Smalltalk(wxSmalltalk)、Java(wx4j)、甚至是JavaScript(wxjs)等。
GtkAda
Ada95的一个完整的图形工具包
FLTK
FLTK的是一个跨平台的C++ GUI工具包用于UNIX / Linux(X11),支持微软Windows和MacOS X
FTXUI
FTXUI是一个简单的跨平台C++库,用于终端的用户界面!功能风格与React类似,不依赖任何第三方库,跨平台,在动画和绘画等功能上有很好的支持。
lesstif
lesstif的是Hungry Programmer的OSF/Motif版本。
Open Motif
Open Motif是Unix环境下的图形库
Microwindows
Microwindows是一个开源项目,旨在将现代图形窗口环境的功能在小型设备和平台上使用。
Tk
Tk是Tcl脚本语言的GUI工具包,用于Unix和Windows平台下的GUI应用程序开发。Tk的特点是易学易用、组件丰富、可移植性强等,可以快速地开发出图形界面。
安装:在官网下载对应操作系统的库文件和开发环境,安装即可。
使用:使用Tcl脚本语言编写Tk界面程序,详细请参考官方文档和教程。
适用场景:Unix和Windows平台下的GUI应用程序开发。
Ultimate++
Ultimate++是一个用于C++图形界面开发的跨平台库,基于C++11的新特性实现。Ultimate++的特点是小巧、易学易用、组件丰富等,可以帮助开发者快速实现图形界面。
安装:在官网下载Ultimate++库文件和开发环境,安装即可。
使用:使用Ultimate++进行可视化开发,或在Ultimate++代码中手动添加各种组件,详细请参考官方文档和示例程序。
适用场景:C++图形用户界面程序开发。
Nana
Nana 是一个用现代 C++11 编写的跨平台界面库。Nana 是一个类似于 C++ 标准的 GUI 库,旨在让开发人员轻松创建具有现代 C++ 风格的跨平台 GUI 应用程序。目前,它定期在 Linux(X11) 和 Windows 上进行测试,并在 macOS 和 FreeBSD 上进行实验。
Duilib
Duilib 是 Windows 系统下的开源的 DirectUI 界面库(遵循 BSD 协议),完全免费,可用于商业软件开发。
Duilib 可以简单方便地实现大多数界面需求,包括换肤、换色、透明等功能,支持多种图片格式,使用 XML 可以方便地定制窗口,能较好地做到 UI 和逻辑相分离,尽量减少在代码里创建 UI 控件。目前,Duilib 已经在国内有较为广泛的使用。
网易 Duilib 使用 C++11 重写,在其原有基础上做了较大重构,搭配谷歌的基础组件 Base 库、基于 Chromium 的 WebView 框架 CEF 以及常用的 UI 组件,形成了一套功能强大、简单易用的完整桌面 UI 开发框架。