Unity3d m_VideoOverlyTextrey像素无效,但纹理使用GUI.DrawTexture正确渲染
我试图从相机获取YUV图像,但当我试图读取由Unity3d m_VideoOverlyTextrey像素无效,但纹理使用GUI.DrawTexture正确渲染,unity3d,google-project-tango,Unity3d,Google Project Tango,我试图从相机获取YUV图像,但当我试图读取由getVideoOverlyTextureYUV()提供的YUVTexure中的像素时,所有像素都设置为“205”。奇怪的是,我可以用GUI.DrawTexture(sometrect,\u texture.m\u videoOverlyTextrey)绘制“Y”纹理我可以看到图像就在那里,我就是不能用getPixels()读取它 我还在项目中使用探戈AR摄像头预置,因此m_useExperimentalVideoOverlay设置为true。我们试图
getVideoOverlyTextureYUV()
提供的YUVTexure
中的像素时,所有像素都设置为“205”。奇怪的是,我可以用GUI.DrawTexture(sometrect,\u texture.m\u videoOverlyTextrey)绘制“Y”纹理代码>我可以看到图像就在那里,我就是不能用getPixels()
读取它
我还在项目中使用探戈AR摄像头
预置,因此m_useExperimentalVideoOverlay
设置为true。我们试图使用非实验性的API,但随后AR摄像头预设停止工作
由于任何人都能够使用IEExperimentAltangoVideoOverlay
?访问Unity中的图像数据,因此GetVideoOverlayTextureYUV
中的纹理与常规Unity纹理2D不同。在Tango Unity SDK中,它在统一级别上创建TraceU2D对象,并将TrutUID传递给本机C++ API来填充。因此,纹理像素值不会存储到Unity,而是直接从本机代码复制到GPU内存中,Unity纹理只有它的textureID。这就是为什么它可以被渲染出来,但不能被读取
要从彩色照相机获取实际字节缓冲区,应使用。回调返回一个YUV缓冲区,RGB的转换函数与中的相同。是的,我们尝试过这样做,但由于AR摄像头
预置已经使用了ItagoExperimentAltangoVideoOverlay,我们无法同时使用这两个接口,可能是有原因的。因为我需要把缓冲区发送给本地插件,我尝试用TangoService\u connectOnFrameAvailable
直接连接到本机插件中的帧回调,它现在似乎正在工作。本机TangoService\u connectOnFrameAvailable
也是我们用来获取字节缓冲区的,但我认为unity sdk目前在这方面有点混乱,我已经为下一个版本做了一个清理更改,所以在下一个版本之后应该更干净。。