Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android glGenerateMipmap()在三星Galaxy SII(马里-400 MP)上速度非常慢_Android_Opengl Es 2.0_Galaxy_Mali - Fatal编程技术网

Android glGenerateMipmap()在三星Galaxy SII(马里-400 MP)上速度非常慢

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毫秒),所以这种速度的减慢确实让我感到困惑。我是做错了什么还是错过了什么?任何人都可以提供

我目前正在三星Galaxy SII(ARM-400 MP)上使用Android NDK和OpenGL ES 2.0开发一些GPGPU。为此,我需要从通过FBO渲染到的纹理生成mipmap。不幸的是,glGenerateMipmap()在设备上似乎非常慢。为512x512 RGBA8888纹理生成mipmap大约需要90毫秒。由于我也在其他Android设备上尝试了相同的代码,该功能的运行速度要快得多(大约2毫秒),所以这种速度的减慢确实让我感到困惑。我是做错了什么还是错过了什么?任何人都可以提供这个案例的示例代码,在使用ARM-GPU的设备上工作吗

以下是我的代码的相关部分:

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在驱动程序中修复: