用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的纹理?
谢谢!!
源代码如下:
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的纹理?
谢谢!!
如果觉得内存不够,可以增加内存条;
哥们,你有好多关于opengl的帖子没结(^_^)