为啥 Tango 相机界面有两个独立的更新纹理功能?
Posted
技术标签:
【中文标题】为啥 Tango 相机界面有两个独立的更新纹理功能?【英文标题】:Why does the Tango Camera Interface have two separate update texture functions?为什么 Tango 相机界面有两个独立的更新纹理功能? 【发布时间】:2016-11-25 12:30:28 【问题描述】:在提出这个问题时,我正在使用最新的 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】: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 可用。
【讨论】:
以上是关于为啥 Tango 相机界面有两个独立的更新纹理功能?的主要内容,如果未能解决你的问题,请参考以下文章
中国版 Office 365 (X-Tenant / Tango) 功能验证报告 - 2 基本步骤
google tango / opencv android 相机应用程序崩溃/挂起