#renderer #content #web #2d #gpu #accelerated

azul-webrender

适用于网页内容的GPU加速2D渲染器

4个版本

0.62.2 2021年12月25日
0.62.1 2021年7月12日
0.62.0 2021年7月11日
0.61.0 2020年5月11日

图形API中排名770

每月下载量29
azul-desktop中使用

MPL-2.0 许可证

4.5MB
97K SLoC

Rust 69K SLoC // 0.1% comments GLSL 28K SLoC // 0.0% comments

基于GPU的网页渲染器。

它作为Servo的实验性渲染后端,但也可以在独立应用程序中使用。

外部依赖

WebRender目前依赖于FreeType

API结构

WebRender的主入口点是crate::Renderer

通过调用Renderer::new(...),您将获得一个Renderer实例,以及一个RenderApiSender。您的Renderer负责将先前处理的帧渲染到屏幕上。

通过调用yourRenderApiSender.create_api(),您将获得一个RenderApi实例,它负责管理资源和文档。内部使用工作线程来解耦工作负载与应用程序线程,因此能够更好地利用多核系统。

所谓的frame指的是屏幕上的当前几何形状。通过在RenderApi上调用set_display_list()来创建新的Frame。当几何形状被处理时,应用程序将通过一个RenderNotifier,一个回调函数来通知,这个函数是你传递给Renderer::new的。更多关于堆叠上下文的信息。

set_display_list()还需要提供BuiltDisplayList。这些是通过最终化一个DisplayListBuilder获得的。这些用于绘制你的几何形状。但它不仅仅包含简单的几何形状,还可以存储另一个StackingContext,因为它们是可嵌套的。

依赖关系

~4–7MB
~142K SLoC