为什么 Tango Camera Interface 有两个独立的更新纹理函数?

Why does the Tango Camera Interface have two separate update texture functions?

我在回答这个问题时使用的是最新的 Tango 版本,即 Zaniah(1.46 版,2016 年 11 月)。我有两个设备,一个 Project Tango 开发工具包和一个预发布的 Lenovo phone。

有谁知道为什么 TangoService_updateTexture 仅在目标 GL_TEXTURE_EXTERNAL_OES 的纹理连接到相机接口时才有效?

有一个单独的 TangoService_updateTextureExternalOes 函数声明用于 GL_TEXTURE_EXTERNAL_OES 纹理,所以这给人的印象是 TangoService_updateTexture 应该与其他类型的纹理一起使用,例如 [=15] =](为什么还有一个单独的功能?)。但是,如果您将纹理与 GL_TEXTURE_2D 目标连接,则会生成一个 gl 错误,指出调用 TangoService_updateTexture 时无法绑定纹理,现在看不到代码,我猜 Tango API 尝试将纹理绑定到 GL_TEXTURE_EXTERNAL_OES 目标,而不管调用哪个函数。

如果是这种情况,为什么会有两个单独的函数?

有没有其他人观察到这一点,这是预期的行为还是已知问题?

我正在努力寻找有关它的任何类型的信息或文档。

API 文档:https://developers.google.com/tango/apis/c/reference/group/camera

TangoService_updateTextureTangoService_updateTextureExternalOes都使用OES纹理。不幸的是,Tango 仅通过 C-API 函数支持 OES 纹理。

这两个函数之间的主要区别在于 TangoService_updateTexture 需要 TangoService_connectTexture 预先提供有效的纹理 ID。这意味着在调用 TangoService_connectTexture 时,您必须具有有效的纹理 ID(当然还有 gl-context)设置。这将 gl-context 的生命周期与 Tango&Android 生命周期紧密地联系在一起。在某些情况下,这可能有点棘手。

另一方面,TangoService_updateTextureExternalOes在调用这个函数之前不需要任何纹理ID设置,所以你可以简单地在render()函数中调用它,这保证了gl-context可用.