Android glGenerateMipmap()在三星Galaxy SII(马里-400 MP)上速度非常慢
我目前正在三星Galaxy SII(ARM-400 MP)上使用Android NDK和OpenGL ES 2.0开发一些GPGPU。为此,我需要从通过FBO渲染到的纹理生成mipmap。不幸的是,glGenerateMipmap()在设备上似乎非常慢。为512x512 RGBA8888纹理生成mipmap大约需要90毫秒。由于我也在其他Android设备上尝试了相同的代码,该功能的运行速度要快得多(大约2毫秒),所以这种速度的减慢确实让我感到困惑。我是做错了什么还是错过了什么?任何人都可以提供这个案例的示例代码,在使用ARM-GPU的设备上工作吗 以下是我的代码的相关部分:Android glGenerateMipmap()在三星Galaxy SII(马里-400 MP)上速度非常慢,android,opengl-es-2.0,galaxy,mali,Android,Opengl Es 2.0,Galaxy,Mali,我目前正在三星Galaxy SII(ARM-400 MP)上使用Android NDK和OpenGL ES 2.0开发一些GPGPU。为此,我需要从通过FBO渲染到的纹理生成mipmap。不幸的是,glGenerateMipmap()在设备上似乎非常慢。为512x512 RGBA8888纹理生成mipmap大约需要90毫秒。由于我也在其他Android设备上尝试了相同的代码,该功能的运行速度要快得多(大约2毫秒),所以这种速度的减慢确实让我感到困惑。我是做错了什么还是错过了什么?任何人都可以提供
glGenTextures(1, &texId);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texId);
// Allocate graphics memory.
glTexImage2D(GL_TEXTURE_2D, 0, format, cols, rows, 0, format, type, NULL);
// Allocate memory for mipmap.
glGenerateMipmap(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// Create off-screen framebuffer object and attach the texture to it.
glGenFramebuffers(1, &fboId);
glBindFramebuffer(GL_FRAMEBUFFER, fboId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0);
// Now render to that texture
...
// Generate MIP map.
glBindTexture(GL_TEXTURE_2D, texId);
glGenerateMipmap(GL_TEXTURE_2D);
此问题已通过ARM在驱动程序中修复: