如何在surfacefligner在android上启动之前绘制一些东西?
在这种情况下,它是某种带有帧缓冲设备的传统Linux,所以直接访问帧缓冲应该是可以的。
直接用HWComposer怎么样,直接用egl怎么样?
如何在surfacefligner在android上启动之前绘制一些东西?
在这种情况下,它是某种带有帧缓冲设备的传统Linux,所以直接访问帧缓冲应该是可以的。
直接用HWComposer怎么样,直接用egl怎么样?
如果 SurfaceFlinger 没有运行,您可以打开帧缓冲设备并写入它(假设您在具有帧缓冲设备的设备上)。
有关这方面的示例,请参阅“恢复”UI 的实现。那里的关键文件是minui/graphics.c。当前的实现依赖于 libpixelflinger。
使用 OpenGL ES / EGL 会有点棘手。一些早期的 GLES 测试,例如San Angeles,使用FramebufferWindow类,但它使用了相当多的框架。(FWIW,即将发布的版本预计会弃用 FramebufferWindow 并将使用它们的 OpenGL 测试切换到与 SurfaceFlinger 对话的新库。)
更新:即将发布的版本已经发布,您可以在此处看到 FramebufferWindow ("WindowSurface") 的替换。
如果 SurfaceFlinger 没有运行,您可以使用内部接口直接与 HardwareComposer 对话。有一些旧的测试可以使用它,但我不知道它们是否仍然有效。在这一点上,SurfaceFlinger 中的代码可能是一个更好的例子。一次只能有一个进程打开 HardwareComposer,因此 SurfaceFlinger 一定不能运行。