2015-07-11 56 views
0

我试图通过TangoService_connectOnFrameAvailable连接我的回调函数。我能够连接它并访问TangoImageBuffer。但是,我注意到缓冲区是const,无法更新。为了某些图像处理目的,我需要修改图像数据。像轮廓检测并显示它。从本机回调中获取和修改图像缓冲区

所以我的问题是我们如何改变TangoJNINative_render方法来更新gl buffer

这里是renederer函数的样子:

Java_com_project_TangoJNINative_render(
     JNIEnv*, jobject) { 
    // Let's say I have image buffer here called "uint_8t* buffer" 
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); 

    glViewport(0, 0, screen_width, screen_height); 

    // UpdateTexture() 
    tango_handler.UpdateColorTexture()); 
    /// I NEED SOME CODE HERE TO set gl buffer 
    video_overlay->Render(glm::mat4(1.0f), glm::mat4(1.0f));  
} 

感谢您的帮助。

+0

这和http://stackoverflow.com/questions/31359081/modify-and-update-camera-frame-via-glsurfaceview有一些重叠 - 这是一个不同的问题吗? – fadden

+0

@fadden您提到的链接指的是更普遍的问题。这个是专门为'Tango'设计的 –

回答

0

与常规相机API类似,您可以接收TangoImageBuffer,处理像素并将它们分配给自己的纹理(不是Tango提供的纹理),并显示此纹理而不是TextureRenderer等。