|
|
发表于 2007-9-5 10:39:00
|
显示全部楼层
Re:[求助]MFC+OpenGL读位图创建纹理: MDI中glGenTextures失败, 改
不用客气,高手都不搭理咱们,自己想办法解决了,这是我用的纹理函数,Animation是一个类,用的时候自己改下
//从文件创建纹理
bool Animation::CreateTexture(char *filename,GLuint &texture)
{
AUX_RGBImageRec *pImage = NULL;
//CBitmap oBitmap;
//oBitmap.LoadBitmap("IDB_BITMAP1");
pImage = auxDIBImageLoad(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);
free(pImage->data);
free(pImage);
return true;
}
//选择纹理
void Animation::SelectTexture(GLuint texture)
{
glBindTexture (GL_TEXTURE_2D, texture);
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);
}
//选择纹理重复
void Animation::SelectTextureRepeat(GLuint texture)
{
glBindTexture (GL_TEXTURE_2D, texture);
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_MIPMAP_NEAREST);
} |
|