我可以使用 Flutter FFI 获得 Flutter 表面纹理吗?

Luc*_*lla 5 c++ dart flutter flutter-engine

这是 Flutter 插件代码的一部分,该插件使用 Flutter 纹理通过 OpenGL 渲染某些内容

private FlutterVideoPlugin(Registrar registrar, MethodChannel channel) {
    this.registrar = registrar;
    this.channel = channel;
    this.textures = registrar.textures();
}

@Override
public void onMethodCall(MethodCall call, Result notSafeResult) {
    final AnyThreadResult result = new AnyThreadResult(notSafeResult);
    if (call.method.equals("createVideoRenderer")) {
        TextureRegistry.SurfaceTextureEntry entry = textures.createSurfaceTexture();
        //do anything with the texture
Run Code Online (Sandbox Code Playgroud)

如您所见,它使用 Flutter methodCall。

是否可以用 C++ 中的 FFI 做同样的事情?我不想依赖onMethodCall,它必须是 FFI 或 Flutter 方法调用,因为我认为 FFI 以不同的方式做所有事情,类似的事情。

然而,由于 Flutter 引擎,特别是纹理部分是用 Java 编写的,看起来我需要一些 java 代码。问题是 FFI 和 java 不能混合。看起来我要么必须使用onMethodCall我的应用程序中的所有内容,要么使用 FFI,但 FFI 似乎不支持获取纹理

小智 0

有一个悬而未决的问题:考虑公开插件 API 以通过 FFI 使用 #110353

关于这个问题的讨论专门针对纹理注册表,所以我相信答案是否定的(目前)。