修改和更新经由GLSurfaceView相机架(Modify and update camera f

2019-10-29 04:39发布

我正在与一个工作GLSurfaceView活性以显示一个机器人设备上的照相机帧。 正如我在我福利局OpenGl Es ,我不知道我怎样才能得到图像缓冲区并修改它,然后显示在手机上修改的框架?

在它实现我的渲染器类GLSurfaceView.Renderer ,我调用本机的功能:

public class Renderer implements GLSurfaceView.Renderer {
  public void onDrawFrame(GL10 gl) {
    MyJNINative.render();
  }
...
}

API ,我有工作,提供一个connectCallBack方法,其能够通过类似访问图像缓冲区onFrameAvailableNow 。 所以,我已经在图像缓冲区这是不幸的const类型。 所以,我的修改,以使其不会得到反映。

现在我的问题是如何添加一些gl方法来修改可以在屏幕上反射的视频缓冲?

我的本地渲染器:

Java_com_project_MyJNINative_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, width, height);

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

Answer 1:

作为法登解释说,你不能改变连接到表面纹理预览缓冲区。 但是你可以获得与预览缓冲区onPreviewFrame()修改和推动的结果通过到OpenGL glTexSubImage2D() 有两个缺陷:你应该隐藏实际的预览(可能将其连接到会不会对你的GL表面可见的纹理),你应该至少在“预览”,看起来很自然做处理速度不够快(20 FPS )。



文章来源: Modify and update camera frame via GLSurfaceView