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

webrender

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

4个版本 (破坏性)

0.61.0 2020年1月15日
0.60.0 2019年2月18日
0.58.0 2019年1月3日
0.0.0 2018年8月14日

#741 in 图形API


skryn中使用

MPL-2.0 许可证

3MB
62K SLoC

一个基于GPU的网络渲染器。

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

外部依赖

WebRender目前依赖于FreeType

API结构

WebRender的主要入口点是crate::Renderer

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

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

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

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

依赖项

~5–11MB
~183K SLoC