コード例 #1
0
ファイル: BAISCOBJ.CPP プロジェクト: gangMeng/AntAnimation
void baiscobj::LoadT16(char *filename, GLuint &texture)//调帖图
{ glGenTextures(1, &texture);            //获取1个未使用的贴图名称
  glBindTexture(GL_TEXTURE_2D, texture); //选择要绑定的贴图(纹理)
  BITMAPINFOHEADER bitHeader;			 //定义位图结构
  unsigned char *buffer;                 //定义位图指针
  buffer=LoadBitmapFileWithAlpha(filename,&bitHeader); //调入位图


  glTexImage2D(GL_TEXTURE_2D,
	  0, GL_RGBA,bitHeader.biWidth,bitHeader.biHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE,buffer);

  //gluBuild2DMipmaps	( GL_TEXTURE_2D,     // 创建一个 2D贴图(纹理)
		//			  4,                 // 使用3种颜色(RGB)+ 颜色深度
		//			  bitHeader.biWidth, // 图像宽
		//			  bitHeader.biHeight,// 图像高
		//			  GL_RGBA,           // 红绿蓝顺序
		//			  GL_UNSIGNED_BYTE,  // 图像的数据类型是字节
		//			  buffer             // 指定贴图(纹理)数据
		//			);                   // 创建贴图(纹理)
  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_MIN_FILTER,GL_LINEAR); //缩小采用三线性滤波
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);//放大采用线性滤波
  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
  free(buffer);                                // 释放位图数据
}
コード例 #2
0
ファイル: imagelib.cpp プロジェクト: rakibcsedu/eglut
bool LoadBmp(int image_id,char *name,int lim,...) 
{

	unsigned char r = 0,g = 0,b = 0;
	unsigned char *buffer;
	BITMAPINFOHEADER bitmapInfoHeader;

	glGenTextures(1, &texture[image_id]);          // Typical Texture Generation Using Data From The Bitmap 
    glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
    glBindTexture(GL_TEXTURE_2D, texture[image_id]); 

	if(lim == 0)
	{
   
		buffer= LoadBitmapFile(name, &bitmapInfoHeader);
		if(buffer == NULL)
			return false;
		     glTexImage2D(GL_TEXTURE_2D, 0, 3, bitmapInfoHeader.biWidth, bitmapInfoHeader.biHeight, 0,
	  GL_RGB, GL_UNSIGNED_BYTE, buffer);

	}
	else
	{
	va_list ap;
	va_start(ap, lim); 
	 r =va_arg(ap, unsigned char);
	 g =va_arg(ap, unsigned char);
	 b =va_arg(ap, unsigned char);
	va_end(ap);
		buffer= LoadBitmapFileWithAlpha(name, &bitmapInfoHeader,r,g,b);
	if(buffer == NULL)
		return false;
			glTexImage2D(GL_TEXTURE_2D, 0, 4, bitmapInfoHeader.biWidth, bitmapInfoHeader.biHeight, 0,
	  GL_RGBA, GL_UNSIGNED_BYTE, buffer);
	}


  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

  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);

  free(buffer);
  
  return true;

}