我正在使用此问题时最新的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
答案 0 :(得分:1)
TangoService_updateTexture
和TangoService_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可用