【问题标题】:glGenerateMipmap() very slow on Samsung Galaxy SII (Mali-400 MP)三星 Galaxy SII (Mali-400 MP) 上的 glGenerateMipmap() 非常慢
【发布时间】:2012-11-26 21:56:10
【问题描述】:

我目前正在使用 Android NDK 和 OpenGL ES 2.0 在三星 Galaxy SII (ARM Mali-400 MP) 上做一些 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);

【问题讨论】:

    标签: android opengl-es-2.0 galaxy mali


    【解决方案1】:
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多