摘要: 1. 搭建上网环境 2. 同步依赖库 接着,下载并配置depot_tools 3. 同步代码 4. 构建测试镜像 若上述操作成功,使用以下命令构建测试类型镜像并关闭开机验证,这样即可自由修改root文件系统内容。如果构建的是test这种类型的镜像,当使用SSH登陆装载此镜像的虚拟机时,密码统一为te 阅读全文
posted @ 2023-11-22 10:18 rmb_999 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1. Assimp 目前为止,我们已经可以绘制一个物体,并添加不同的光照效果了。但是我们的顶点数据太过简单,只能绘制简单的立方体。但是房子汽车这种不规则的形状我们的顶点数据就很难定制了。索性,这部分并不需要我们苦逼的开发人员去考虑。成熟的3D建模工具可以将设计师设计的模型导出模型文件,借助模型加载库 阅读全文
posted @ 2023-11-11 11:30 rmb_999 阅读(375) 评论(0) 推荐(1) 编辑
摘要: 1. 投光物 继续上一节的流程,到目前为止,我们介绍的都是点光源。但是现实世界中,光源的类型却要相对复杂一些。大概会有这么几种形式:定向光、点光源、聚光等等。 2. 定向光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。这点很好理解,生活中我们的太阳光,就可以近似看做是平行光。定 阅读全文
posted @ 2023-11-10 11:28 rmb_999 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 1. 光照 显示世界中,光照环境往往是相对复杂的。因为假设太阳作为世界的唯一光源,那么太阳光照在物体A上A将阳光进行反射后,A又做为一个新的光源共同作用于另一个物体B。所以于B来讲光源是复杂的。然而这只是其中一个因素,受制于天气、温度等其他情况我们需要考虑的因素更多。在OpenGL中我们仅考虑一些简 阅读全文
posted @ 2023-11-09 15:21 rmb_999 阅读(433) 评论(0) 推荐(1) 编辑
摘要: 1. 摄像机 摄像机就好像是我们的眼睛,我们从摄像机的方向观察世界空间中的模型。摄像机远离模型,模型自然就变小了(透视投影下),然而,在GL中事实上并没有摄像机的概念。但是我们可以通过移动世界空间远离我们的摄像机来模拟摄像机远离世界的感觉。这也正是在上一章中,我们的观察矩阵是(0,0,-3)的原因。 阅读全文
posted @ 2023-11-08 14:55 rmb_999 阅读(560) 评论(0) 推荐(4) 编辑
摘要: GL中的坐标系是标准设备坐标,即他的每个坐标轴的取值范围都是[-1.0,1.0]。通常,我们输入到顶点着色器中的顶点坐标都会被转换为标准化设备坐标,然后进行光栅化,转变成屏幕坐标。然而事实上,从顶点坐标到屏幕坐标是一个较为复杂的过程。总体来讲为了某些计算更加方便,会经过5个坐标系统的变换: 局部空间 阅读全文
posted @ 2023-11-07 17:06 rmb_999 阅读(631) 评论(0) 推荐(2) 编辑
摘要: 1. 纹理 在OpenGL中,纹理是一种常用的技术,用于将图像或图案映射到3D模型的表面上,以增加图形的细节和真实感 2. 纹理坐标 纹理坐标在x和y轴上,范围为0到1之间(注意我们使用的是2D纹理图像)。使用纹理坐标获取纹理颜色叫做采样(Sampling)。纹理坐标起始于(0, 0),也就是纹理图 阅读全文
posted @ 2023-11-06 18:06 rmb_999 阅读(714) 评论(0) 推荐(3) 编辑
摘要: 1. GLSL语言 glsl语言是用来编写着色器的,通过一段一段包含main函数的程序片段,告诉渲染引擎怎么去渲染内容。 glsl语言的语法有点类似c语言风格,只是增加了一些特有的关键字来修饰变量,下面是一个着色器基本的程序结构: 首先声明的是GLSL的版本号和模式,然后就是声明变量。像其他语言一样 阅读全文
posted @ 2023-11-04 17:22 rmb_999 阅读(229) 评论(0) 推荐(0) 编辑
摘要: gclient 是由 Google 用 Python 开发的一套跨平台的git仓库管理工具,它的作用类似 git 的 submodule,用来将多个git仓库组成一个solution进行管理,比如chromium项目是由80多个独立的git仓库构成的。这样的好处是,一个git仓库可以被多个solut 阅读全文
posted @ 2023-11-03 15:19 rmb_999 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 1. VIZ的三个端 在设计层面上 viz 的架构如下图所示: 在设计上 viz 分了三个端,分别是 client 端, host 端和 service 端。 client 端用于生成要显示的画面(CF)。应用中至少有一个 root client,可以有多个 child client,它们组成了一个 阅读全文
posted @ 2023-11-02 15:17 rmb_999 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 在 Chromium 中 viz 的核心逻辑运行在 GPU 进程中,负责接收其他进程产生的 viz::CompositorFrame(简称 CF),然后把这些 CF 进行合成,并将合成的结果最终渲染在窗口上。 可以将这个过程拆解成以下几个步骤来分析: viz 的初始化; viz 的架构设计; CF 阅读全文
posted @ 2023-11-01 14:51 rmb_999 阅读(309) 评论(0) 推荐(1) 编辑
摘要: blink 中实现了2种 canvas,分别是 blink::HTMLCanvasElement 和 blink::OffscreenCanvas ,前者对应 html/dom 中的 canvas,后者对应 js 中的 OffscrenCanvas。 html canvas 有两种模式,一种是常规模 阅读全文
posted @ 2023-10-31 16:00 rmb_999 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 1. Chromium 的渲染流水线 Blink —> Paint -> Commit -> (Tiling ->) Raster -> Activate -> Draw(Submit) —> Viz Blink 对接 cc 的绘制接口进行 Paint,Paint 生成 cc 模块的数据源(cc:: 阅读全文
posted @ 2023-10-30 11:26 rmb_999 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 1. Trace chromium 在 base 库中提供了 base::trace_event::TraceLog 类,该类是 TRACE_EVENT* , TRACE_COUNTER* 等宏的底层实现,关于这些宏定义见 base/trace_event/common/trace_event_co 阅读全文
posted @ 2023-10-27 17:45 rmb_999 阅读(609) 评论(0) 推荐(0) 编辑
摘要: Command Buffer 是支撑 Chromium 多进程硬件加速渲染的核心技术之一。它基于 OpenGLES2.0 定义了一套序列化协议,这套协议规定了所有 OpenGLES2.0 命令的序列化格式,使得应用对 OpenGL 的调用可以被缓存并传输到其他的进程中去执行(GPU进程),从而实现多 阅读全文
posted @ 2023-10-26 17:37 rmb_999 阅读(310) 评论(0) 推荐(2) 编辑
摘要: 资源共享指的是在一个 Context 中的创建的 Texture 资源可以被其他 Context 所使用。一般来讲只有相同 share group Context 创建的 Texture 才可以被共享,而 Chromium 设计了一套允许不同 share group 并且跨进程的 Texture 共 阅读全文
posted @ 2023-10-25 11:25 rmb_999 阅读(315) 评论(0) 推荐(0) 编辑
摘要: Chromium 中的多线程机制由 base 库提供,要理解 Chromium 中的多线程机制,首先要理解的概念就是 base::MessageLoop 和 base::TaskScheduler ,它们两个是 Chromium 多线程的基础 1. MessageLoop详解 base::Messa 阅读全文
posted @ 2023-10-24 10:39 rmb_999 阅读(603) 评论(1) 推荐(1) 编辑
摘要: 默认新标签页修改方法: 1. 找到chrome/browser/ui/browser_tabstrip.cc文件 找到变量NavigateParams params: 1 NavigateParams params(browser, url.is_empty() ? browser->GetNewT 阅读全文
posted @ 2023-10-23 11:23 rmb_999 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么需要同步 由于 OpenGL API的执行是异步的,所以需要同步,如果是这些API是同步的就没有这个话题了。异步API可以进行缓存,从而可以在合适的时机批量的将这些API调用(称为API命令)发送给GPU执行,避免应用过于频繁的在内核态和用户态切换。 这里的异步指的是一个GL API调用 阅读全文
posted @ 2023-10-21 15:04 rmb_999 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 基于chromium103版本 1. 自定义扩展API接口 chromium默认扩展api接口中有chrome.runtime.*,和chrome.send.*等,现在我们就仿照chrome.runtime方式来定义自己的接口,供给插件或者网页使用。 其实chromium 增加自定义 api 接口, 阅读全文
posted @ 2023-10-21 11:41 rmb_999 阅读(344) 评论(0) 推荐(3) 编辑