Cobalt
Starboard
在 Cobalt 的上下文中,Starboard 是一个重要的概念。让我为你解释一下:
- Starboard 是什么?
- Starboard 是 Cobalt 的一个关键组件,用于抽象操作系统功能和平台特性,使其能够在不同平台上运行。
- 它是一个用于移植的抽象层,包含了一系列用于处理不同操作系统和平台特性的实现片段。
- Starboard 的目标是将 Cobalt 与底层操作系统和硬件隔离开来,使 Cobalt 能够在不同设备上无缝运行。
- 如何使用 Starboard?
- 在 Cobalt 的源代码中,你会看到 Starboard 的相关目录和文件,这些文件包含了特定平台的实现细节。
- Starboard 将平台特定的功能封装在这些文件中,以便 Cobalt 可以在不同平台上运行。
- Starboard 的设计目标是只包含 Cobalt 实际使用的平台特定功能,而不包含不必要的部分。
总之,Starboard 是 Cobalt 的一个关键组件,用于处理操作系统和平台差异,使 Cobalt 能够在不同设备上运行。
360 Video
在Youtube video 360中涉及到的几个函数及流程:
A Video Frame, 它将被渲染到一个球面上。
Skia
Skia 是一个开源的 2D 图形库,它提供了通用的 API,可以在各种硬件和软件平台上使用。它作为 Google Chrome 和 ChromeOS、Android、Flutter 等产品的图形引擎123。
Skia 是用 C++ 编写的完整的 2D 图形库,用于绘制文本、几何图形和图像。 它抽象了平台特定的图形 API(这些 API 在不同平台之间有所不同)。 最初由 Skia Inc. 开发,后来于 2005 年被 Google 收购,并于 2008 年以 New BSD 自由软件许可证 的形式发布为开源软件3。
egl opengl
cobalt 中egl opengl API的跟踪
cobalt/renderer/egl_and_gles.h
cobalt/renderer/rasterizer/egl/graphics_state.cc
cobalt中wayland
SbWindowPrivate::SbWindowPrivate(wl_compositor* compositor,
wl_shell* shell,
const SbWindowOptions* options,
float pixel_ratio) {
width = kWindowWidth;
height = kWindowHeight;
video_pixel_ratio = pixel_ratio;
if (options && options->size.width > 0 && options->size.height > 0) {
width = options->size.width;
height = options->size.height;
}
surface = wl_compositor_create_surface(compositor);
shell_surface = wl_shell_get_shell_surface(shell, surface);
wl_shell_surface_add_listener(shell_surface, &shell_surface_listener, this);
wl_shell_surface_set_title(shell_surface, "cobalt");
struct wl_region* region;
region = wl_compositor_create_region(compositor);
wl_region_add(region, 0, 0, width, height);
wl_surface_set_opaque_region(surface, region);
wl_region_destroy(region);
egl_window = wl_egl_window_create(surface, width, height);
WindowRaise();
}