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]);
	}
}
Esempio n. 2
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;
}
Esempio n. 3
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;
}
Esempio n. 4
0
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
}
Esempio n. 5
0
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;
}
Esempio n. 7
0
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;										
}
Esempio n. 8
0
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);

}
Esempio n. 9
0
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;
}
Esempio n. 10
0
//////////////////////////////////////////////////////////////////////////
//@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;
}
Esempio n. 11
0
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;
}
Esempio n. 13
0
CEE3DINPROC_API CEE3D_RGBImageRec * _stdcall CeE3DDIBImageLoadA(LPCSTR lpName) {
	return (CEE3D_RGBImageRec *)auxDIBImageLoadA(lpName); 
}