C++图形库

建议大家多逛逛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 开发框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟退火模板

OI WIKI上的模拟退火 #include <cmath> #include <cstdlib> #include <ctime> #include <iomanip> #include <iostream>constexpr int N 10005; int n, x[N], y[N], w[N]; double ansx, ansy, dis;double Rand() { return (double)rand() / RA…

如何使用 Git Cherry-Pick 和 Reset 处理误提交,并确保安全回滚

在开发过程中&#xff0c;偶尔会遇到不小心将功能开发提交到错误分支上的情况。假设我们计划在 10 月 24 号上线某些功能&#xff0c;但却不小心在 10 月 17 号的上线分支上进行了开发。为了解决这个问题并将误提交的内容移到正确的分支上&#xff0c;我们可以借助 Git 的一些功…

使用yield压平嵌套字典有多简单?

我们经常遇到各种字典套字典的数据&#xff0c;例如&#xff1a; nest_dict {a: 1,b: {c: 2,d: 3,e: {f: 4}},g: {h: 5},i: 6,j: {k: {l: {m: 8}}} } 有没有什么简单的办法&#xff0c;把它压扁&#xff0c;变成&#xff1a; {a: 1,b_c: 2,b_d: 3,b_e_f: 4,g_h: 5,i: 6,j_k_l_…

提交任务时,线程池队列已满,这时会发生什么

当提交任务到线程池时&#xff0c;如果线程池的任务队列已满&#xff0c;具体会发生什么取决于线程池的配置和提交任务的方式。以下是对这一情况的详细分析&#xff1a; 一、线程池状态分析 任务队列已满&#xff1a;线程池中的任务队列已经达到其容量上限&#xff0c;无法再…

【Linux系统内核探索】进程调度

文章目录 进程调度什么是进程调度&#xff1f;进程调度算法task_struct的链式结构 总结 进程调度 什么是进程调度&#xff1f; 进程调度是操作系统内核的核心功能之一&#xff0c;负责在多个进程之间分配CPU时间&#xff0c;使得系统能够同时运行多个进程。因为计算机的CPU资…

MongoDB的基本操作

&#x1f337;数据库准备 &#x1f388;Mongoshell 1.在指定目录下创建mongodb文件夹、其子文件log和data以及mongodb.log cd /home/ubuntu mkdir -p mongodb/data mkdir -p mongodb/log touch mongodb/log/mongodb.log 执行mongodb命令启动mongdb服务 mongod --dbpath /h…

编解码基础 -- 图像编码之HEIF

HEIF 技术文档 HEIF&#xff08;High Efficiency Image Format&#xff0c;高效图像格式&#xff09;是一种基于 HEVC&#xff08;High Efficiency Video Coding&#xff0c;高效视频编码&#xff0c;亦称 H.265&#xff09;的视频编码技术的图像文件格式。HEIF 由 MPEG&#…

SwiftUI:单个App支持设置多语言

SwiftUI 全新多语言方案 简化本地化的字符串- WWDC21 - 视频 本地化您的SwiftUI app - WWDC21 - 视频 构建全球化App&#xff1a;本地化的示例- WWDC22 - 视频 构建支持多语言的App - WWDC24 - 视频 单个App支持设置多语言 工程 Info.plist里添加 键值UIPrefersShowingLangua…

机器视觉相机自动对焦算法

第一&#xff0c;Brenner梯度法、 第二&#xff0c;Tenegrad梯度法、 第三&#xff0c;laplace梯度法、 第四&#xff0c;方差法、 第五&#xff0c;能量梯度法。 此实例通过使用Halcon实现5种清晰度算法函数&#xff1a; 1. 方差算法函数&#xff1b; 2. 拉普拉斯能量函数…

什么是 Robots.txt 文件 重要性、作用和对 SEO 的影响

Robots.txt 文件是一个简单的文本文件&#xff0c;它指示网络爬虫网站的哪些内容可以索引&#xff0c;哪些内容不应该索引。Robots.txt 文件位于网站的根目录中&#xff0c;指导搜索引擎爬虫索引哪些内容&#xff0c;忽略哪些内容。它在塑造网站在搜索结果中的存在方面起着至关…

DDD重构-实体与限界上下文重构

DDD重构-实体与限界上下文重构 概述 DDD 方法需要不同类型的类元素&#xff0c;例如实体或值对象&#xff0c;并且几乎所有这些类元素都可以看作是常规的 Java 类。它们的总体结构是 Name: 类的唯一名称 Properties&#xff1a;属性 Methods: 控制变量的变化和添加行为 一…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode&#xff08;独立服务器模式&#xff09; 2、two server mode&#xff08;双服务器模式&#xff09; 3、distributed multiple-executor mode&#xff08;分布式多…

Threejs 实现3D 地图(01)创建基本场景

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…

Vertx实现一个通用的MqttServer

mqtt协议介绍 简介 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅范式的“轻量级”消息协议&#xff0c;由 IBM 发布。 IoT 设备要运作&#xff0c;就必须连接到互联网&#xff0c;设备才…

数据分析-Apache_hive

任务一 创建库及外部表 在 comm 数 据 库 下 创 建 一 个 名 为 dws_behavior_log的外部表&#xff0c;如果表已存在&#xff0c;则先删除&#xff1b;分 区字段为dt&#xff0c;即根据日期进行分区&#xff1b;另外&#xff0c;要求指定表的存 储路径为HDFS的/behavior/dws/d…

java让系统直接播放音频/java获取音频流输送到播放设备SourceDataLine

Java Sound API支持常见的格式&#xff1a; WAV&#xff08;Waveform Audio File Format&#xff09; 常见的无损音频格式&#xff0c;支持 PCM&#xff08;脉冲编码调制&#xff09;编码。 AIFF&#xff08;Audio Interchange File Format&#xff09; 主要用于 Macintosh 系统…

OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 K-最近邻&#xff08;K-nearest neighbours, KNN&#xff09;基于的背景/前景分割算法。 该类实现了如 319中所述的 K-最近邻背景减除。如果前景…

058_基于python时尚女装抖音号评论数据分析系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

智慧城管综合管理系统源码,微服务架构,基于springboot、vue+element+uniapp技术开发,支持二次开发

智慧城管源码&#xff0c;智慧城管执法办案系统源码 智慧城管综合执法办案平台是智慧城市框架下&#xff0c;依托物联网、云计算、多网融合等现代化技术&#xff0c;运用数字基础资源、多维信息感知、协同工作处置、智能化辅助决策分析等手段&#xff0c;形成具备高度感知、互联…

C++共同体

共同体是一种数据格式&#xff0c;他能储存不同的数据类型&#xff0c;但是同一时间只能储存其中的一种类型。 语法&#xff1a; union 共同体名 { 成员一的数据类型 成员名一&#xff1b; 成员二的数据类型 成员名二&#xff1b; 成员n的数据类型 成员名n&#xff1b; }