为什么Tango相机界面有两个独立的更新纹理功能?

时间:2016-11-25 12:30:28

标签: google-project-tango

我正在使用此问题时最新的Tango版本,即Zaniah(版本1.46,2016年11月)。我有两个设备,一个Project Tango开发套件和一个预发布的联想手机。

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

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

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

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

我很难找到任何关于它的信息或文档。

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

1 个答案:

答案 0 :(得分:1)

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可用