I am using the lastest Tango release at the time of this question which is Zaniah (Version 1.46, November 2016). I have two devices, a Project Tango development kit and a pre-release Lenovo phone.
Does anyone know why TangoService_updateTexture
only works when a texture with the target GL_TEXTURE_EXTERNAL_OES
is connected to the camera interface ?
There is a separate TangoService_updateTextureExternalOes
function which is stated for use with GL_TEXTURE_EXTERNAL_OES
textures so this gives the impression that TangoService_updateTexture
should work with other types of textures such as GL_TEXTURE_2D
(why else have a separate function?). However if you connect a texture with the GL_TEXTURE_2D
target then a gl error is generated stating the texture can't be bound when TangoService_updateTexture
is called, now without seeing the code I'm guessing that the Tango API tries to bind a texture to the GL_TEXTURE_EXTERNAL_OES
target regardless of which function is called.
So if this is the case why are there two separate functions ?
Has anybody else observed this, is this intended behaviour or is this a known issue ?
I'm struggling to find any sort of information or documentation about it.
The API docs: https://developers.google.com/tango/apis/c/reference/group/camera
Both TangoService_updateTexture
and TangoService_updateTextureExternalOes
uses OES texture. Unfortunately, Tango only supports OES texture through C-API functions.
The major difference between these two functions is that TangoService_updateTexture
requires TangoService_connectTexture
with a valid texture id beforehand. That means when calling TangoService_connectTexture
you have to have a valid texture id (and of course, a gl-context) setup. This ties gl-context's lifecycle very tightly together with Tango&Android lifecycle. This can be a little bit tricky to handle in some cases.
On the other side, TangoService_updateTextureExternalOes
doesn't require any texture id setup before calling this function, so you can simply call it in render()
function, which guarantees that gl-context is available.