大学时候的工程,要清理电脑,陆续把有用的代码贴出来
GLuint mytexture[4]; //存储纹理 AUX_RGBImageRec *LoadBMP(char *Filename) //载入位图图象 { FILE *File=NULL; // 文件句柄 // 确保文件名已提供 if (!Filename) { return NULL; } // 尝试打开文件 File=fopen(Filename,"r"); if (File) // 文件存在么? { // 关闭句柄 fclose(File); // 载入位图并返回指针 return auxDIBImageLoad(Filename); } MessageBox(NULL,"载入位图失败!",NULL,MB_OK); return NULL; } /********************* 载入位图(调用上面的代码)并转换成纹理*******************/ int LoadGLTextures() { int Status=FALSE; int i=0,j=0; AUX_RGBImageRec *TextureImage[4]; // 创建纹理存储空间 memset(TextureImage,0,sizeof(void *)*4); // 载入位图,检查有无错误,如果位图没找到则退出 if((TextureImage[0]=LoadBMP("Image/1.bmp"))&&(TextureImage[1]=LoadBMP("Image/2.bmp"))&&(TextureImage[2]=LoadBMP("Image/3.bmp")) &&(TextureImage[3]=LoadBMP("Image/4.bmp"))) { Status=TRUE; //创建纹理 glGenTextures(4, &mytexture[0]); //创建贴图 while(i<4) { glBindTexture(GL_TEXTURE_2D, mytexture[i]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[j]->sizeX, TextureImage[j]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[j]->data); i++; j++; } } for(i=0;i<4;i++) { //纹理是否存在 if(TextureImage[i]) { // 纹理图像是否存在 if(TextureImage[i]->data) free(TextureImage[i]->data); // 释放图像结构 free(TextureImage[i]); } } return Status; // 返回 Status }