我实现了一个在 mali-400 gpu 上运行的 opengl-es 应用程序。我从相机中抓取 1280x960 RGB 缓冲区并使用 glTexImage2D 在 gpu 上渲染。
然而,对于 1280x960 分辨率帧, glTexImage2D 调用大约需要 25 毫秒。它对 pCameraBuffer 进行了额外的内存复制。
1)有什么办法可以提高glTexImage2D的性能?2) FBO 会有帮助吗?如何使用帧缓冲区对象进行渲染。我发现很少有 FBO 示例,但我看到这些示例在最后一个参数(数据)中将 NULL 传递给 glTexImage2d。那么如何使用 FBO 渲染 pCameraBuffer 呢?
下面是为每个相机帧运行的代码。
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);