OpenGL显示图片

来源:互联网 发布:固态硬盘坏了数据恢复 编辑:程序博客网 时间:2024/06/16 02:42

显示一个正方形位图文件pictest.bmp。
举例:
LoadT8("images/pictest.bmp", iTex);
glTranslatef(0,0,-10);
texture(iTex);
tPic(3.0f);

附:各个函数的源码:
//绘制正方形
void tPic(float e)
{
glBegin(GL_QUADS);
  glTexCoord2f(0.0f, 0.0f); glVertex3f(-e, -e,  0.0f);
  glTexCoord2f(1.0f, 0.0f); glVertex3f( e, -e,  0.0f);
  glTexCoord2f(1.0f, 1.0f); glVertex3f( e,  e,  0.0f);
  glTexCoord2f(0.0f, 1.0f); glVertex3f(-e,  e,  0.0f);
glEnd();
}
//加载位图
bool LoadT8(char *filename, GLuint &texture)
{
AUX_RGBImageRec *pImage = NULL;

//加载图片内容
pImage = auxDIBImageLoad(filename); 
if(pImage == NULL)
  return false;

//创建纹理
glGenTextures(1, &texture); 
glBindTexture    (GL_TEXTURE_2D,texture);
//生成2维映射
gluBuild2DMipmaps(GL_TEXTURE_2D,4, 
       pImage->sizeX,   
       pImage->sizeY, 
       GL_RGB, GL_UNSIGNED_BYTE,
       pImage->data   
      );
//释放内存
free(pImage->data);     
free(pImage);
return true;     
}
//绑定纹理
void texture(UINT textur)
{
//绑定纹理
glBindTexture  (GL_TEXTURE_2D, textur);
//指定贴图方式和滤波方式
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,

GL_LINEAR_MIPMAP_NEAREST);
}
(感谢《学OPENGL编3D游戏》课件 来自www.gameres.com)

0 0
原创粉丝点击