Android ndk OpenCL clCreateFromGLTexture使用不同的纹理目标

Android ndk OpenCL clCreateFromGLTexture使用不同的纹理目标,android-ndk,opengl-es-2.0,android-camera,opencl,Android Ndk,Opengl Es 2.0,Android Camera,Opencl,我的项目的目标是在安卓设备上获取实时摄像头提要,使用OpenCL对这些图像执行实时过滤,并在屏幕上呈现输出 我的目标是实时完成这项工作,这就是我使用OpenCL OpenGL互操作的原因 我已经成功地使用EGLContext和EGLDisplay创建了一个共享上下文。现在我正在尝试使用clCreateFromGLTexture,以便在OpenCL内核中访问这些图像。然而,问题是android要求绑定纹理时,目标必须是GL_texture_EXTERNAL_OES,如此处所述:(),但使用clCr

我的项目的目标是在安卓设备上获取实时摄像头提要,使用OpenCL对这些图像执行实时过滤,并在屏幕上呈现输出

我的目标是实时完成这项工作,这就是我使用OpenCL OpenGL互操作的原因

我已经成功地使用EGLContext和EGLDisplay创建了一个共享上下文。现在我正在尝试使用clCreateFromGLTexture,以便在OpenCL内核中访问这些图像。然而,问题是android要求绑定纹理时,目标必须是GL_texture_EXTERNAL_OES,如此处所述:(),但使用clCreateFromGLTexture()时,此纹理目标不是有效的纹理目标

所以我不知道该怎么做

以下是我在android中创建GL纹理的方法:

    GLES20.glGenTextures(1, texture_id, 0);
    GLES20.glBindTexture(texture_target, texture_target);
这就是我试图创建cl内存对象的方式:

    glTexImage2D(texture_target, 0, GL_RGBA, 640, 480, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
    cl_mem camera_image = clCreateFromGLTexture(m_context, CL_MEM_READ_WRITE, texture_target, 0, texture_id, &err);
尝试从GL纹理创建cl内存对象时出现的错误是cl_无效值


我对OpenGL还很陌生,所以可能有些基本的东西我已经看过了。

您从相机接收到的纹理不是您期望的常见纹理。如果从着色器读取,甚至必须在着色器中指定扩展名


您需要执行从GL_TEXTURE_EXTERNAL_OES目标到另一个以常规方式创建的纹理的附加复制。幸运的话,你可以把他们两个都绑定到fbo中,然后发布blit。如果这不起作用,您可以始终使用法线纹理作为渲染目标,只需使用相机图像绘制四边形纹理。

嗨,sharpneli,谢谢您的回复。我一直在阅读OpenGL ES参考页(),但我找不到将GL_纹理_外部_OES绑定到FBO的方法。另外,请您详细说明使用普通纹理作为渲染目标的含义。对不起,我是OpenGL的新手,正在努力理解所有这些行话。