本文以Android 为例, 全面解析native Window、Surface、Double buffer之间的关系
Native Window:
图形显示首先需要创建一个窗口 native window, 它一般与平台有关。 在Android里, ANativeWindow 这个结构体是与窗口相关的。 窗口一般会包含一个保存 显示内容的 buffer, 在Android里 这个buffer是ANativeWindow_Buffer, 是一个 结构体表示 如下:
typedef struct ANativeWindow_Buffer{
int32_t width; // 水平方向显示的像素数目
int32_t height; // 垂直方向显示的像素数目
int32_t stride; // 内存中 一行所能显示的最大 像素数目
int32_t format; // buffer中的格式
….
}ANativeWindow_Buffer;
可以看出,该buffer包含了显示一个图像时所包含的信息
结论一: WIndow实际上就是 包含了 显示图像内容的一段内存。
Surface:
这里的Surface是指 图像渲染时所需的Surface,即on-Screen Rendering Surface。
创建一个on-screen rendering surface, 首先需要创建一个本地平台的native Window:然后我们创建EGLSurface,即Surface对象: