【发布时间】:2015-01-03 22:23:55
【问题描述】:
直接写入帧缓冲区不再有效。无论如何要写入NDK中的显示吗?我可能会使用 ANativeWindow 但这需要一个现有的表面。有没有更好的办法?或者是在本机创建表面然后使用 ANativeWindow 的唯一方法?
【问题讨论】:
标签: android c++ android-ndk surfaceview framebuffer
直接写入帧缓冲区不再有效。无论如何要写入NDK中的显示吗?我可能会使用 ANativeWindow 但这需要一个现有的表面。有没有更好的办法?或者是在本机创建表面然后使用 ANativeWindow 的唯一方法?
【问题讨论】:
标签: android c++ android-ndk surfaceview framebuffer
显示器归 SurfaceFlinger 和 Hardware Composer 所有,因此除非您打算停止 Android 框架,否则您需要处理它们。 (有关详细信息,请参阅graphics architecture doc。)
如果您正在开发一个以“shell”或“root”身份运行的独立命令,并且您不介意使用非公共接口,则可以向 SurfaceFlinger 请求一个窗口并在其上绘制。从 5.0 "Lollipop" 开始,旧的 GLES 测试已更新为以这种方式工作。有关指针,请参阅this answer;旧金山的演示是说明性的。
如果您正在开发一个常规应用程序,您必须创建一个 Surface 并通过 ANativeWindow 渲染到它。不允许常规应用独占访问显示器。
【讨论】: