【问题标题】:Xamarin Android Camera2-Preview by OpenGL TextureXamarin Android Camera2-通过 OpenGL 纹理预览
【发布时间】:2016-10-26 01:39:42
【问题描述】:

我正在尝试将“新相机框架”Camera2 的相机流放入 OpenGL 纹理,但图像保持黑色。

我正在使用 Xamarin(但 Java 应该非常相似)并且我正在使用 NDK 进行本机渲染。所以我得到了一个创建 OpenGL-ES 上下文的 GLSurfaceView,我能够从C++。

没有检查以下示例:https://github.com/googlesamples/android-Camera2Basic,我想从那里继续。

我没有将 TextureView 的 SurfaceTexture 作为目标添加到 CaptureRequestBuilder,而是创建了一个带有新纹理句柄的新 SurfaceTexture。

// C++
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &m_TextureHandle);       
glBindTexture(GL_TEXTURE_EXTERNAL_OES, m_TextureHandle);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_EXTERNAL_OES, 0);

// C# (or Java)
_SurfaceTexture = new SurfaceTexture(m_TextureHandle);
_SurfaceTexture.FrameAvailable += SurfaceTextureOnFrameAvailable;

最后一行注册了传入的帧。 在这里,我刚刚分派到我的渲染线程并调用:

_SurfaceTexture.UpdateTexImage();

我错过了重要的一步吗?我还尝试使用已弃用的相机 api 获得相同的结果。

谢谢 启

【问题讨论】:

    标签: android opengl-es android-ndk xamarin.android camera2


    【解决方案1】:

    找到问题..这是由无效的OpenGL参数引起的:/ 在寻找问题时,我创建了一个小样本。我上传以防有人感兴趣:SampleCode (OneDrive)

    【讨论】:

      【解决方案2】:

      您是否还将新的 SurfaceTexture 包含在目标 Surface 的 camera2 捕获会话创建列表中,而不是 TextureView 的 Surface?

      【讨论】:

      • 是的,我添加了它而不是 TextureView 的 Surface,因为最后我根本不想要控件。
      • 我还收到了我调度 UpdateTexImage 调用的事件,将其推送到 GLSurfaceView 的事件队列中......这个调用也完成了..
      猜你喜欢
      • 2018-08-05
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2015-05-10
      相关资源
      最近更新 更多