c++ - Chrome 和 Servo 使用的 2D 和 3D 图形引擎
问题描述
不久前(经过数小时的搜索)我了解到 Chrome/Webkit 使用Cairo 图形作为它的(至少)2D绘图。我不确定它对 3D 有什么作用。但是如果你搜索“chrome 使用的图形引擎”,你会得到一堆关于Blink的东西,但这不是你想要的......
简要看一下Servo浏览器,您会看到server/servo/blob/master/components/canvas/webgl_mode/inprocess.rs#L13链接到servo/ gleam ,这似乎是在 Servo 中提供 OpenGL 支持的抽象层。但是我还没有看到它实际上连接到操作系统特定的“驱动程序”或者你有什么图形,就像开罗一样(我想)。想想看,我不确定 Cairo 是如何抽象windows/darwin/linux 的,知道这会很有趣。
所以我的问题是:
- Chrome 和 Servo 正在使用的图形引擎(2D 和 3D)。
- 他们在哪里执行与操作系统的图形驱动程序或系统级 API 的实际操作系统级连接。
我想看看大型图形引擎如何连接到本机图形。就像现在一样,他们可能只是连接到 iOS 的 Metal API,而不是更高级别的东西。我不确定它们在 Mac、Windows 和 Linux 上连接到什么。我有兴趣查看它的源代码。
我听说过Mesa,但不确定这些项目是否将它用于 3D。
解决方案
推荐阅读
- node.js - 如何在 Windows 上的 node.js 中获取/计算当前磁盘活动
- python-3.x - 对于列中的每个产品,确定带来产品次数最多的 user_id
- jenkins - 多个 Jenkinsfiles,一个代理标签
- java - 选择选项后页面自动刷新
- python-3.x - 使用 livy 向 AWS EMR 提交具有虚拟环境的 pyspark 作业
- python - Python:算法将每个第 n 个元素添加到列表中并进行碰撞检查
- sql - 格式化引入 Azure SQL 数据库的数据
- kubernetes - 哪个 apiVersion 与 k8s 作业和 imagePullSecret 一起使用
- python - 使用 Pandas 绘制和处理日期/时间数据
- flutter - 在 ListView.builder() 中选中/取消选中 ListTiles - Flutter