用OpenGL的函数导入一个300M的BMP图像,导入过程中消耗内存太多,虽然导入完以后会自动释放中间内存,但是很多机子都没有那么多的内存来处理!
    源代码如下:
GLuint textureID = 0; 
AUX_RGBImageRec* pTex = NULL;
pTex = auxDIBImageLoad(strFileName);
if(pTex == NULL)
    return 0;
glGenTextures(1, &textureID);
// 设置像素对齐格式
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, textureID);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, pTex->sizeX, pTex->sizeY, \
GL_RGB, GL_UNSIGNED_BYTE, pTex->data);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
if(pTex != NULL)
{
    if(pTex->data != NULL)
        delete pTex->data;
    delete pTex;
}
    auxDIBImageLoad函数和gluBuild2DMipmaps函数消耗了太多的临时内存,
    有什么解决办法、或代替的方法?
    能不能用自己的方法导入bmp图像作为OpenGL的纹理?
    谢谢!!

解决方案 »

  1.   

    能导入多大内存,跟显卡有关,一般是最大是2048*2048个像素;
    如果觉得内存不够,可以增加内存条;
    哥们,你有好多关于opengl的帖子没结(^_^)
      

  2.   

    有必要,在有些地方的图更大。我的一个10000×10000的bmp图导入总共消耗了一分钟。
      

  3.   

    opengl又不是专门搞图像处理的。你这样搞肯定会死的
      

  4.   

    我也在考虑分块拼接,但是不可能用fotoshop把人家的图给分割成几块!