显示一个正方形位图文件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)