当前位置: 首页 > article >正文

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库

        Skia 是一个 2D 图形库,它的作用是为开发者提供一个高层次的绘图接口,方便他们进行 2D 图形渲染(比如绘制文本、形状、图像等)。Skia 本身不直接管理 GPU 或进行底层的渲染工作,而是通过 底层图形 API(如 OpenGL 或 Vulkan)来实现硬件加速的渲染。

- Skia 的角色:提供高层的 2D 渲染 API,抽象掉底层的硬件细节。
- 依赖底层 API:Skia 本身依赖于图形 API(如 OpenGL、Vulkan)来实际执行 GPU 渲染任务。

2. OpenGL —— 图形 API

        OpenGL 是一个 图形 API,它允许开发者使用 GPU 来渲染 2D 和 3D 图形。它是一个跨平台的标准,广泛用于图形渲染、游戏开发等领域。

- OpenGL 的角色:直接控制 GPU 的硬件,通过命令驱动显卡进行图形渲染。它提供了一个比较高层的接口来操作 GPU,但不像 Vulkan 那样精细控制硬件。
- 与 Skia 的关系:Skia 可以选择 OpenGL 作为底层图形 API 来实现硬件加速的 2D 渲染任务。

3. Vulkan —— 图形 API

        Vulkan 是一个 现代、低级的图形 API,相比 OpenGL,Vulkan 提供了更细粒度的控制,可以让开发者更精确地控制 GPU 和计算资源,从而优化性能。

- Vulkan 的角色:Vulkan 更接近硬件,它允许开发者更详细地管理 GPU 的资源和并行计算。它的 API 设计比较复杂,但提供了更高效的性能,适合那些对渲染性能有更高要求的应用。
- 与 Skia 的关系:Skia 也可以选择 Vulkan 作为底层 API,利用 Vulkan 提供的更低级别、更高效的 GPU 渲染功能。

4. Mesa —— 开源图形实现

        Mesa 是一个 开源的图形库和驱动程序,它实现了多个图形 API(包括 OpenGL、Vulkan、Direct3D 等)。在 Linux 上,Mesa 提供了对 OpenGL 和 Vulkan 等标准的实现,支持各种 GPU 进行加速渲染。

- Mesa 的角色:Mesa 不是一个 API,而是一个图形驱动实现,它为 Linux 等操作系统提供了对 OpenGL、Vulkan 等图形 API 的实现。简单来说,Mesa 实现了这些 API,使得你可以在 Linux 系统上运行基于 OpenGL 和 Vulkan 的应用。
  - 例如,Mesa 提供了对 OpenGL 的实现(`libGL`),它允许 Linux 系统中的应用程序使用 OpenGL。
  - 另一部分,Mesa 也提供了对 Vulkan 的实现(`RadV`),它是针对 AMD GPU 的 Vulkan 驱动。
- 与 Skia 的关系:Skia 依赖于底层的图形 API 来实现渲染。如果你在 Linux 系统上运行 Skia,Mesa 就可能是提供 OpenGL 或 Vulkan 实现的库,从而让 Skia 可以通过这些底层 API 来实现硬件加速的渲染。

总结它们之间的关系:

- Skia:一个 2D 图形库,用来进行 2D 渲染,它依赖底层图形 API(如 OpenGL 或 Vulkan)来加速渲染。
- OpenGL 和 Vulkan:都是底层的图形 API,提供对 GPU 的控制和渲染操作。Skia 可以选择 OpenGL 或 Vulkan 作为底层 API 来执行实际的渲染任务。
- Mesa:是一个开源项目,提供对 OpenGL 和 Vulkan 等图形 API 的实现,特别是在 Linux 系统上。它负责将图形 API 翻译为硬件可执行的指令,确保这些标准在不同的操作系统和硬件上能够工作。Skia 在 Linux 上运行时,可能会通过 Mesa 提供的 OpenGL 或 Vulkan 实现来进行渲染。

关系图示:
Skia → OpenGL / Vulkan(底层图形 API)
Mesa 提供 OpenGL 和 Vulkan 的实现(特别是在 Linux 上)。

举个例子

假设你在开发一个 2D 图形应用(比如用 Skia 渲染文本和图形):

- 在 Windows 上,如果你选择 OpenGL 或 Vulkan,Windows 系统本身就会提供相应的图形驱动。
- 在 Linux 上,Skia 会使用 Mesa 提供的 OpenGL 或 Vulkan 实现来渲染图形,因为 Mesa 是 Linux 系统上对这些图形 API 的开源实现。

结论

- Skia 提供 2D 图形的抽象接口,依赖底层图形 API(如 OpenGL 或 Vulkan)进行硬件加速渲染。
- OpenGL 和 Vulkan 是底层图形 API,它们控制 GPU 渲染过程,Skia 会选择其中一个来加速图形。
- Mesa 是 OpenGL 和 Vulkan 在 Linux 上的开源实现,Skia 在 Linux 上使用 Mesa 来实现图形渲染。

Skia、OpenGL、Mesa之间的关系-CSDN博客

当没有OpenGL时,Skia如何绘制?-CSDN博客

OpenGL的主要功能-CSDN博客

https://blog.csdn.net/qq_43287763/article/details/145595342?sharetype=blogdetail&sharerId=145595342&sharerefer=PC&sharesource=qq_43287763&spm=1011.2480.3001.8118

相关文章:

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库 Skia 是一个 2D 图形库,它的作用是为开发者提供一个高层次的绘图接口,方便他们进行 2D 图形渲染(比如绘制文本、形状、图像等)。Skia 本身不直接管理 GPU 或进行底层的渲染工作,而是通过 底层图…...

从源代码编译构建vLLM并解决常见编译问题

源代码构建vLLM 前言构建vLLM异常问题异常1异常2异常3 构建成功 前言 在通过创建全新虚拟环境条件下,使用pip install vllmx.x.x.方式安装VLLM后,遇到了VLLM使用方面的异常,经过多种方式尝试解决,最终无果。 仔细查看官方文档后&…...

SQL-leetcode—1683. 无效的推文

1683. 无效的推文 表:Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中,tweet_id 是这个表的主键。 content 只包含美式键盘上的字符&am…...

轻量级TinyXml2的应用

TinyXml2库基本介绍 TinyXML2 是 simple、small、efficient 的基于DOM (Document Object Model,文档对象模型) 的开源 C XML文件解析库,可以很方便地应用到现有的项目中 。目前,TinyXML1 开发已经停止,所有…...

DeepSeek正重构具身大模型和人形机器人赛道!

中国人工智能公司DeepSeek(深度求索)以“低成本、高效率、强开放”的研发范式横空出世,火遍并震撼全球科技圈;DeepSeek展现出来的核心竞争力,除了低成本及推理能力,更重要的是开源模型能力追赶上了最新的闭…...

centos7 升级openssl并安装python3

参考文章:https://www.cnblogs.com/chuanzhang053/p/17653635.html 卸载已有版本 yum remove -y openssl openssl-devel下载1.1版本 wget https://www.openssl.org/source/openssl-1.1.1v.tar.gztar -zxf openssl-1.1.1v.tar.gz 查看openssl.conf文件的目录 fin…...

Linux库制作与原理:【静态库】【动态库】【目标文件】【ELF文件】【ELF从形成到假造轮廓】【理解链接和加载】

目录 一.什么是库 二.静态库 2.1创建静态库 我们在之前的路径下新建lib使用我们自己的库 2.2 使用makefile生成静态库 三.动态库 3.1动态库生成 3.2动态库使用 3.3库运行搜索路径 四.目标文件 五.ELF文件 六.ELF从形成到加载轮廓 6.1ELF形成可执行 6.2 ELF可执行文…...

2025前端面试题

2025前端面试题 uniappuniapp如何打包发版到线上 vuekeep-alive 有哪几个生命周期vue3构建项目vue如何封装组件vue2的响应式原理vue3的响应式原理vue3和2的区别Vuex中的重要核心属性有哪些?Vue-router有哪几种路由守卫 es6数组去重的方法slice与splice的区别数组有哪…...

Win7本地化部署deepseek-r1等大模型详解

参考链接 在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08 2G内存Windows7运行deepseek-r1:1.5b 这两个链接写的可能不够详细,有同学私信问实现过程,这里进一步解释一下。 一、准备 需要准备的大模型、工具…...

【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错

挂载NTFS文件系统出错 各种模型放在了这个机械硬盘上,虽然速度慢,但是好在容量大。大模型在工作,但是程序看起来有问题,导致系统卡死了,然后我重启了,然后报错:wrong fs type bad option &…...

Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例

搞个引言 在 Spring 框架的开发中,依赖注入(Dependency Injection,简称 DI)是它的一个核心特性,它能够让代码更加模块化、可测试,并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…...

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用 【承接商业广告,如需商业合作请+v17740568442】 文章目录 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用个人配置详情一、安装ollama二、下载deepseek版本…...

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…...

Unity 命令行设置运行在指定的显卡上

设置运行在指定的显卡上 -force-device-index...

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题:在默认的Visual Studio中,选择单行代码后,按下Ctrl /键会将代码注释掉,但再次按下Ctrl /键时,会进行双重注释,这不是我们想要的。 实现效果:当按下Ctrl /键会将代码注释掉,…...

共用poetry和conda的方法

起因 基于开源项目继续开发,发现该项目使用poetry管理依赖,但本地开发及调试环境依赖conda且未安装原生python,不支持直接安装poetry,因此需要使用conda安装及使用poetry。操作系统:Ubuntu 什么是poetry 一项依赖于…...

教程:使用 Vue 3 和 arco 实现表格合并

1. 功能概述 本教程将介绍如何使用 Vue 3 和 arco 组件库实现表格合并功能。具体来说,我们会根据表格数据中的某个字段(如 type)对表格的某一列(如入库类型列)进行合并,同时将质检说明列合并为一列。 2. …...

Docker 常用命令基础详解(二)

四、容器操作命令 4.1 运行容器 使用docker run命令可以创建并运行一个容器,它就像是一个神奇的 “启动器”,让镜像中的应用程序在容器中运行起来。其基本语法为: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 其中,OPTIONS…...

uniapp - iconfont下载本地并且运用至项目上

1、项目中创建一个文件夹放置iconfont相关文件,例如src/assets/iconfont(名称自己定义) 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址,修…...

【前端】自己从头实现一个gpt聊天页面

预览 最小化功能点 主界面:侧边栏会话历史、聊天窗口发送和断开。侧边栏:展示会话列表,每个会话包含多条聊天记录, 通过localstorage本地储存和恢复,会话需要重命名和删除。聊天框:区分一下发送者和回答者…...

数据结构——二叉树(2025.2.12)

目录 一、树 1.定义 (1)树的构成 (2)度 2.二叉树 (1)定义 (2)二叉树的遍历 (3)遍历特性 二、练习 1.二叉树 (1)创建二叉树…...

Vulhub靶机 ActiveMQ任意 文件写入(CVE-2016-3088)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 漏洞版本:ActiveMQ在5.14.0之前的版本(不包括5.14.0) 二、访问靶机IP 8161端口 默认账户密码都是admin 1、利用bp抓包,修改为PUT方法并在fileserver…...

跟着李沐老师学习深度学习(十一)

经典的卷积神经网络 在本次笔记中主要介绍一些经典的卷积神经网络模型,主要包含以下: LeNet:最早发布的卷积神经网络之一,目的是识别图像中的手写数字;AlexNet: 是第一个在大规模视觉竞赛中击败传统计算机…...

【微软- Entra ID】Microsoft Entra ID

Microsoft Entra ID是微软提供的基于云的身份和访问管理服务。Microsoft Entra ID是一个全面的解决方案,用于管理身份、执行访问策略以及在云和本地保护您的应用程序和数据。 目录 一、查看 Microsoft Entra ID 微软Entra租户 微软Entra模式 二、比较Microsoft Entra ID与…...

Halcon相机标定

1,前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”,然后再将其投影到成像平面(图像物理坐标系),最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…...

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1:配置过程 2、编写自动备份sh脚本文件3:设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件,然后将文件同步到另一…...

《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期:Google开…...

LabVIEW与小众设备集成

在LabVIEW开发中,当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求,而厂家虽然提供了配套软件,但由于系统中还需要控制其他设备且不能使用厂商的软件时,必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中&#xff0…...

无人机之无线传输技术!

一、Lightbridge和OcuSync图传技术 Lightbridge技术:这是大疆自主研发的一种专用通信链路技术,使用单向图像数据传输,类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输,并且可以实现几乎“零延时”的720p高清图像传…...

移远通信边缘计算模组成功运行DeepSeek模型,以领先的工程能力加速端侧AI落地

近日,国产大模型DeepSeek凭借其“开源开放、高效推理、端侧友好”的核心优势,迅速风靡全球。移远通信基于边缘计算模组SG885G,已成功实现DeepSeek模型的稳定运行,并完成了针对性微调。 目前,该模型正在多款智能终端上进…...