首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用不同纹理目标的OpenCL clCreateFromGLTexture

使用不同纹理目标的OpenCL clCreateFromGLTexture
EN

Stack Overflow用户
提问于 2014-04-15 00:54:55
回答 1查看 645关注 0票数 2

我的项目的目的是从Android设备上获取实时的摄像头信息,使用OpenCL对这些图像执行实时过滤,并在显示中呈现输出。

我的目标是实时地做到这一点,这就是为什么我要使用OpenCL-OpenGL互操作。

我已经成功地使用EGLContext和EGLDisplay创建了一个共享上下文。现在我尝试使用clCreateFromGLTexture,以便在OpenCL内核中访问这些映像。然而,问题是android要求当绑定纹理时目标必须是GL_TEXTURE_EXTERNAL_OES (http://developer.android.com/reference/android/graphics/SurfaceTexture.html),但是当使用clCreateFromGLTexture (https://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture2D.html)时,这个纹理目标不是有效的纹理目标。

所以我不知道该怎么做。

以下是我如何在android中创建GL纹理:

代码语言:javascript
运行
复制
    GLES20.glGenTextures(1, texture_id, 0);
    GLES20.glBindTexture(texture_target, texture_target);

这就是我试图创建cl内存对象的方式:

代码语言:javascript
运行
复制
    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_INVALID_VALUE。

我对OpenGL非常陌生,所以我可能忽略了一些基本的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 09:44:44

你从相机中得到的纹理不是你所期望的那样。如果从着色器中读取,甚至必须在着色器中指定扩展名。

您需要执行从GL_TEXTURE_EXTERNAL_OES目标到另一个纹理的额外复制,该纹理是以通常的方式创建的。幸运的话,你可以把它们都绑定到fbo上,然后再发blit。如果这不起作用,您可以始终使用正常纹理作为渲染目标,只需绘制一个四纹理与相机图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23072859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档