void Tree::loadTextures(char *fileName) { FILE *file=NULL; AUX_RGBImageRec *textureImage[1]; //创建纹理空间 memset(textureImage,0,sizeof(void *)*1); //读取纹理文件 file=fopen(fileName,"r"); if (file) { textureImage[0]=auxDIBImageLoadA(fileName); fclose(file); } else printf("Read texture failed!"); glGenTextures(1,&texture[0]); //创建纹理 glBindTexture(GL_TEXTURE_2D, texture[0]); //选择使用纹理 gluBuild2DMipmaps(GL_TEXTURE_2D, 3, textureImage[0]->sizeX, textureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, textureImage[0]->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);//纹理不受颜色干扰 glBindTexture(GL_TEXTURE_2D,texture[0]);//选择使用纹理 glEnable(GL_TEXTURE_2D); //open //释放纹理 if (textureImage[0]) { if (textureImage[0]->data) free(textureImage[0]->data); free(textureImage[0]); } }
int MeshModelRender::CreateTexture(const std::string& texture_file_name) { #ifdef WIN32 GLuint texName; AUX_RGBImageRec* texture_image = auxDIBImageLoadA((LPCSTR)texture_file_name.c_str()); glGenTextures(1, &texName); glBindTexture(GL_TEXTURE_2D, texName); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 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, texture_image->sizeX, texture_image->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture_image->data); if (texture_image) { if (texture_image->data) free(texture_image->data); free(texture_image); } #endif return 0; }
void Game::CTexture::LoadTexture(const char* FileName) { _pTexture = auxDIBImageLoadA(FileName); glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, _pTexture->sizeX, _pTexture->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, _pTexture->data); _bAllowDraw = true; }
AUX_RGBImageRec *LoadBMP(CHAR *Filename) // 载入位图图象 { FILE *File = NULL; // 文件句柄 if (!Filename) // 确保文件名已提供 { return NULL; // 如果没提供,返回 NULL } File = fopen(Filename, "r"); // 尝试打开文件 if (File) // 文件存在么? { fclose(File); // 关闭句柄 return auxDIBImageLoadA(Filename); // 载入位图并返回指针 } return NULL; // 如果载入失败,返回 NULL }
AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A BitmapImage { FILE *File = NULL; // File Handle if (!Filename) // Make Sure AFilename Was Given { return NULL; // If Not Return NULL } File = fopen(Filename, "r"); // Check To See IfThe File Exists if (File) // Does The FileExist ? { fclose(File); // Close The Handle return auxDIBImageLoadA(Filename); // Load The Bitmap AndReturn A Pointer } return NULL; // If Load FailedReturn NULL }
/* bool LoadT8(char *filename, GLuint &texture)//调8位贴图 { AUX_RGBImageRec *pImage = NULL; //LPCWSTR file=(LPCWSTR)filename; pImage = auxDIBImageLoadA(filename); // 装入位图 if(pImage == NULL) return false; // 确保位图数据已经装入 glGenTextures(1, &texture); // 生成纹理 glBindTexture(GL_TEXTURE_2D,texture); // 捆绑纹理 gluBuild2DMipmaps(GL_TEXTURE_2D,4, pImage->sizeX, pImage->sizeY,GL_RGB, GL_UNSIGNED_BYTE,pImage->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); free(pImage->data); //释放位图占据的内存资源 free(pImage); return true;// 返回true } */ bool LoadTexture(char *filename, GLuint &texture) { AUX_RGBImageRec *pImage = NULL; pImage = auxDIBImageLoadA(filename); //装入位图 if (pImage == NULL) return false; glGenTextures(1, &texture); //生成贴图 glBindTexture(GL_TEXTURE_2D, texture); //贴图生效 //glTexImage2D(GL_TEXTURE_2D, 0, 3, pImage->sizeX, pImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, pImage->data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //缩小时线性滤波 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); //扩大时线性滤波 gluBuild2DMipmaps(GL_TEXTURE_2D, 4, pImage->sizeX, pImage->sizeY, GL_RGB, GL_UNSIGNED_BYTE, pImage->data); //贴图数据 free(pImage->data);//释放位图内存 free(pImage); return true; }
AUX_RGBImageRec * Floor::LoadBMP(CHAR *Filename) { FILE *File = NULL; if (!Filename) { return NULL; } File = fopen(Filename,"r"); if (File) { fclose(File); return auxDIBImageLoadA(Filename); } return NULL; }
void MyWindow::initGL() { texture = auxDIBImageLoadA("6.bmp"); cout << texture->sizeX<<endl<<texture->sizeY<<endl; glGenTextures(1, &textures[0]); glBindTexture(GL_TEXTURE_2D,textures[0]); glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexImage2D(GL_TEXTURE_2D, 0, 3, texture->sizeX, texture->sizeY,0, GL_RGB, GL_UNSIGNED_BYTE, texture->data); GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0}; /* Red diffuse light. */ GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0}; glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); glClearDepth(200.0f); glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glDepthFunc(GL_LESS); glShadeModel(GL_SMOOTH); glEnable(GL_TEXTURE_2D); drawCurs(); glShadeModel(GL_SMOOTH); my_cam->update(); glEnable(GL_COLOR_MATERIAL); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); }
AUX_RGBImageRec *LoadBMP(char *Filename) { FILE *file = NULL; if (!Filename) return NULL; file = fopen(Filename, "r"); if (file) { fclose(file); return auxDIBImageLoadA(Filename); } else { MessageBox(NULL, TEXT("1"), TEXT("1"), MB_OK); } return NULL; }
////////////////////////////////////////////////////////////////////////// //@intro 读取MTL文件生成三维模型对应的纹理,重新映射纹理 ////////////////////////////////////////////////////////////////////////// void GLTextureArea::readMtlFile() { FILE* file; char* dir; char buf[128]; int materialNum = 0; char* map_file; AUX_RGBImageRec *pBitmap = NULL; file = fopen(glmModel->mMtllibname,"r"); while(fscanf(file,"%s",buf) != EOF) { switch(buf[0]) { case 'n': materialNum++; break; case 'm': fgets(buf,sizeof(buf),file); sscanf(buf,"%s %s",buf,buf); pBitmap = auxDIBImageLoadA(buf); if(!pBitmap) { std::cout<<"Can't find the BMP file"<<endl; return; } if(pBitmap == NULL) { std::cout<<"Can't read the BMP file: "<<map_file<<endl; return; } gluBuild2DMipmaps(GL_TEXTURE_2D,3,pBitmap->sizeX,pBitmap->sizeY,GL_RGB,GL_UNSIGNED_BYTE,pBitmap->data); break; default: fgets(buf,sizeof(buf),file); break; } } cout<<"The mtl file is read successfully"<<endl; }
int LoadGLTexTures_sky(GLuint& unTexture, const char* chFileName) { AUX_RGBImageRec *TextureImage; //保存贴图数据的指针 TextureImage = auxDIBImageLoadA((LPCSTR)"sky.bmp"); //TextureImage_head = auxDIBImageLoadA((LPCSTR)"face.bmp"); glGenTextures(1, &unTexture); glBindTexture(GL_TEXTURE_2D, unTexture); //设置纹理的信息, glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->sizeX, TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //设置滤波为线性滤波 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //线性滤波 if (TextureImage) //释放资源 { if (TextureImage->data) { free(TextureImage->data); } free(TextureImage); } return 1; }
GLuint TextureLoader::loadTexture(char* Filename) { GLuint id = 0; AUX_RGBImageRec *texture[1]; FILE *File=NULL; File=fopen(Filename,"r");// Check To See If The File Exists if (File)// Checks if file exsists { fclose(File); texture[0] = auxDIBImageLoadA(Filename);// Load The Bitmap And Return A Pointer } /* Sets the pixel storage mode to unpack pixels in byte aligned mode */ glPixelStorei(GL_UNPACK_ALIGNMENT, 1); /* provides unused texture identifier names */ glGenTextures(1, &id); /* Binds "texName" as a 2D texture and activates texture */ glBindTexture(GL_TEXTURE_2D, id); // BUILD MIP MAPS gluBuild2DMipmaps( GL_TEXTURE_2D, 3, texture[0]->sizeX, texture[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, texture[0]->data ); /* Controls texture wrapping with mip maps*/ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_NEAREST ); /* Defines a 2-dimensional texture */ glTexImage2D(GL_TEXTURE_2D, 0, 3, texture[0]->sizeX, texture[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture[0]->data); return id; }
CEE3DINPROC_API CEE3D_RGBImageRec * _stdcall CeE3DDIBImageLoadA(LPCSTR lpName) { return (CEE3D_RGBImageRec *)auxDIBImageLoadA(lpName); }