首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FBO提高glTexImage2D性能

如何使用FBO提高glTexImage2D性能
EN

Stack Overflow用户
提问于 2019-07-02 13:10:05
回答 1查看 388关注 0票数 0

我实现了一个opengl-es应用程序,它运行在mali 400 gpu上。我从相机上抓取了1280x960RGB的缓冲区,并使用glTexImage2D在gpu上渲染。

然而,对于1280x960分辨率的帧,glTexImage2D调用大约需要25毫秒。它对pCameraBuffer做了额外的内存复制。

1)有什么方法可以提高glTexImage2D的性能吗? 2) FBO会有帮助吗?如何使用帧缓冲区对象进行渲染。我发现了一些FBO示例,但我发现这些示例在最后一个参数( glTexImage2d )中传递了NULL。那么我如何用FBO渲染pCameraBuffer呢?

下面是为每个摄像机帧运行的代码。

代码语言:javascript
复制
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, SCENE_WIDTH, SCENE_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, pCameraBuffer);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDeleteTextures(1, &textureID);
EN

回答 1

Stack Overflow用户

发布于 2019-07-05 02:58:15

通常的方法是尝试将相机缓冲区直接导入到图形驱动程序中,而根本不需要任何内存分配或复制。是否支持这在很大程度上取决于平台集成和系统中驱动程序的功能。

对于Linux系统,也就是您所指定的系统,路由是通过EGL_EXT_image_dma_buf_import扩展实现的。您需要一个相机驱动程序来创建一个由dma_buf管理的内存支持的表面,以及一个旁通道来将dma_buf文件句柄放入运行图形操作的应用程序中。然后,您可以使用上面的扩展将其转换为EGLImage。

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

https://stackoverflow.com/questions/56845697

复制
相关文章

相似问题

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