CEF的那点事 -- CEF介绍

CEF是Chromium Embedded Framework的简称,是Google公司开发的一个浏览器内核框架,以开源库的方式提供,可以内嵌到第三方程序中用于显示网页以及和网页进行交互。

CEF主要使用C++语言进行开发,目前也有CEF的其他语言的绑定,比如CefSharp就是C#的绑定。

CEF老版本使用的WebKit内核,但从2013年开始,CEF已经使用Google自主研发的Blink内核(网上也有人说,Blink是基于Webkit修改而来,这个无从考证)。

一、官网

CEF的官网是:https://bitbucket.org/chromiumembedded/cef/wiki/Home,国内用户访问可能不会太顺利。

二、版本

CEF经历了CEF1和CEF3两个大版本,CEF1现已基本被淘汰,目前主流的是CEF3。

CEF3在3683版本之前的版本定义规则为:CEF X.YYYY.A.gHHHHH,
例如:CEF 3.3626.1895.g7001d56 / Chromium 72.0.3626.121

"X" :cef3的主版本号;
"YYYY" :Chrominum 分支号;
 "A" :   代表当前分支中,提交次数的一个增量;
 "gHHHHHHH" :取Git Commit的哈希值的7个字符,g为git的首字母

3683以后,CEF3的版本定义规则发生了变化,改成了如下样式:CEF 73.1.3+g46cf800

我们可以从include\cef_version.h文件获取CEF版本相关的一些宏:

#define CEF_VERSION "3.3626.1894.g90eb8cc"
#define CEF_VERSION_MAJOR 3
#define CEF_COMMIT_NUMBER 1894
#define CEF_COMMIT_HASH "90eb8ccacc520cd83910a64dbb8fadd1a6c22258"
#define COPYRIGHT_YEAR 2019

#define CHROME_VERSION_MAJOR 72
#define CHROME_VERSION_MINOR 0
#define CHROME_VERSION_BUILD 3626
#define CHROME_VERSION_PATCH 96

三、预编译文件下载

CEF官方提供了Linux(32/64/ARM/ARM64)、MacOS X 64、Win32、Win64平台的预编译好的库文件供下载,下载地址为:http://opensource.spotify.com/cefbuilds/index.html

以Win32平台为例,我们一般下载Standard Distribution即可:
CEF Download

四、Windows XP支持

CEF 2623版本是最后一个支持Windows XP的版本,目前官方已经不提供预编译文件供下载,如果需要获取2623版本,有2种方式:

  1. 从第三方源下载。
  2. 从官方git下载CEF源码checkout到2623版本进行编译,当然这是一个漫长的过程。

作者已经将编译好的CEF 2623版本上传到https://github.com/winsoft666/cef_binary,该版本集成了对MP4的支持。

五、渲染模式

5.1 窗口模式

这个是CEF的默认模式,在这个模式下,CEF会自动在指定的父窗体下创建一个子窗体,CEF负责图形的绘制、鼠标键盘事件、窗体大小改变事件等,开发者不需要为这些事情操心。更重要的一点,在该模式下CEF支持GPU混合加速,性能更高,兼容性也更好,Chrome等浏览器默认都是采用该模式。

混合加速可以通过--enable-gpu-compositing--disable-gpu-compositing参数来开启或关闭

我们可以通过Spy++查看CEF自动创建的子窗体:
在这里插入图片描述

5.2 离屏渲染模式

离屏渲染(Off-Screen Rendering)简称OSR

在该模式下,CEF不会自动创建任何窗体,而是将图像数据返回给调用者,由调用者来负责图像的绘制工作,同时调用者还需要负责鼠标键盘事件、窗口大小改变等事件的处理。

所以,离屏渲染模式可以理解为:调用者将鼠标键盘事件、窗口信息(如大小,DPI等)等传递给CEF,CEF根据这些信息将网页渲染到内存中,然后将内存数据传递给调用者,由调用者来负责显示。

采用这种模式虽然开发工作量比较大,但是灵活性更高,能满足各种定制要求,比如实现透明的、不规则的页面显示。

值得注意的是,该模式不支持混合加速,这就意味着在渲染复杂页面时(特别是有动画的页面)CPU和GPU的占用将高于前面介绍的窗体模式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

china_jeffery

你的鼓励是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值