HarmonyOS 鸿蒙Next Flutter 外接纹理,对接自己的 GL 环境

发布于 1周前 作者 yuanlaile 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Flutter 外接纹理,对接自己的 GL 环境

https://gitee.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/04_development/Flutter%20OHOS%E5%A4%96%E6%8E%A5%E7%BA%B9%E7%90%86%E9%80%82%E9%85%8D%E7%AE%80%E4%BB%8B.md#demo%E5%9C%B0%E5%9D%80 我参考上述链接中获取相机的步骤,获取到了 textureID 和 surfaceID 。

textureID 传回给了 Flutter 。 surfaceID 传到了我创建的 gl 环境中,通过

OH_NativeWindow_CreateNativeWindowFromSurfaceId(surfaceIdNum, &window);

获取到了 native window ,然后创建 eglsurface 。但这期间报了:

18:19:47.936 C01401/Bufferqueue E <312>GetNativeWindow: Cannot find nativeWindow by uniqueId <private>.

我打印了我的 surface id ,看格式应该是没有问题

18:19:47.936 A0F000/OHCamera-CPP I 【EGLManager】 Surface id=269092585996288

我在脱离了 GL 环境和 Flutter 环境,使用鸿蒙原生 OH_NativeImage_Create 创建 NativeImage 然后获取 SurfaceId ,然后通过 OH_NativeWindow_CreateNativeWindowFromSurfaceId(SurfaceId) 获取 nativewindow ,也报了同样的错误。

C01401/Bufferqueue E <312>GetNativeWindow: Cannot find nativeWindow by uniqueId <private>.

这该怎么处理啊?


更多关于HarmonyOS 鸿蒙Next Flutter 外接纹理,对接自己的 GL 环境的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next Flutter 外接纹理,对接自己的 GL 环境的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS鸿蒙系统中,使用Flutter外接纹理(External Texture)对接自定义的OpenGL(GL)环境,通常涉及以下几个关键步骤:

  1. 创建纹理:首先,在你的GL环境中创建一个纹理对象,并确保它已正确初始化。

  2. 纹理注册:通过Flutter Engine提供的API,将创建的GL纹理注册为外部纹理。这通常涉及到调用特定的平台通道或插件接口。

  3. 纹理更新:在GL环境中渲染内容时,确保将内容绘制到之前注册的纹理上。这可能需要你使用适当的帧缓冲对象(FBO)和渲染技术。

  4. Flutter侧显示:在Flutter侧,使用Texture widget来显示外部纹理。通过传递纹理ID给Texture widget,你可以在Flutter UI中嵌入并显示GL渲染的内容。

  5. 同步与资源管理:确保GL渲染和Flutter UI之间的同步,以及正确管理纹理资源,避免内存泄漏和渲染错误。

请注意,具体实现细节可能因HarmonyOS版本和Flutter引擎的不同而有所变化。务必参考最新的HarmonyOS和Flutter官方文档。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部