以下分析基于Android R.
简述
上一章我们分析了App是如何通过更改一个小小的WindowManager的LayoutParam的属性,来影响Framework决策帧率变化的。
接来下我们详细看看SurfaceFlinger是如何根据Framework传入的帧率参数选择合适帧率的。
以下分析基于Android Q.
回顾上一篇章中的读取图像的步骤:
在图像采样器创建之前,我们首先看看纹理图像视图,这个是在我们创建交换链的时候见过:
Framebuffers, 帧缓冲区。之前我们在学习’Swap Chain-交换链’时提到Vulkan没有“默认帧缓冲区”的概念,取而代之的是名为 “swap chain” 即交换链,也就是渲染的缓冲区,必须在Vulkan中明确创建。 现在我们已经设置了渲染过程,以期望使用与交换链图像相同格式的单个帧缓冲区,但实际上我们还没有创建任何帧缓冲区。
通过将渲染过程创建期间指定的附件包装到VkFramebuffer对象中来绑定附件。
帧缓冲区对象引用表示附件的所有VkImageView对象。在我们的情况下,这将只是一个单一的:颜色附件。但是,我们必须用于附件的图像取决于在检索用于表示的图像时交换链返回的图像。这意味着我们必须为交换链中的所有图像创建一个帧缓冲区,并使用与绘制时检索到的图像相对应的帧缓冲区。