如何给立方体的6个面贴上不同的纹理?? 关于OpenGL

我最近再看NeHe的OpenGL教程....看到纹理这章, 但我还是不知道要怎么给立方体的六个面贴上不同的纹理...请各位帮我写下代码~~ 谢谢了...
最新回答
三分醒七分醉

2024-06-01 06:10:34

int LoadGLTextures()
{
int Status=FALSE;
AUX_RGBImageRec *TextureImage[1]; //创建纹理储存空间
memset(TextureImage,0,sizeof(void*)*1);

/////////////////////////////////
//增加图片的路径
char name1[20];
char name2[20];
glGenTextures(6,&texture[0]); //告诉GL我们即将创建六个纹理,并将其保存在以0开始的texture数组中
for(int i=0;i<6;i++)
{
//图片路径的处理
strcpy(name1,"Images/薛华啤酒");
itoa(i+1,name2,10);
strcat(name2,".bmp");
strcat(name1,name2);

if(TextureImage[0]=LoadBMP(name1))
{
Status=TRUE;
//glGenTextures(6,&texture[0]); //创建六个纹理
//使用来自位图的数据创建Nearest滤波贴图
glBindTexture(GL_TEXTURE_2D,texture[i]);
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,TextureImage[0]->sizeX,TextureImage[0]->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,TextureImage[0]->data);
}
else
{
Status=FALSE;
}
}
if(TextureImage[0])
{
if(TextureImage[0]->data)
{
free(TextureImage[0]->data);
}
free(TextureImage[0]);
}
return Status;
}
///////////////////////////////////////////
//我也弄过这个教程一段时间,希望上面的代码对你有帮助,当然,我的这个方法有点取巧了。
独身迷漾少女

2024-06-01 18:46:18

int
LoadGLTextures()
{
int
Status=FALSE;
AUX_RGBImageRec
*TextureImage[1];
//创建纹理储存空间
memset(TextureImage,0,sizeof(void*)*1);
/////////////////////////////////
//增加图片的路径
char
name1[20];
char
name2[20];
glGenTextures(6,&texture[0]);
//告诉GL我们即将创建六个纹理,并将其保存在以0开始的texture数组中
for(int
i=0;i<6;i++)
{
//图片路径的处理
strcpy(name1,"Images/薛华啤酒");
itoa(i+1,name2,10);
strcat(name2,".bmp");
strcat(name1,name2);
if(TextureImage[0]=LoadBMP(name1))
{
Status=TRUE;
//glGenTextures(6,&texture[0]);
//创建六个纹理
//使用来自位图的数据创建Nearest滤波贴图
glBindTexture(GL_TEXTURE_2D,texture[i]);
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,TextureImage[0]->sizeX,TextureImage[0]->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,TextureImage[0]->data);
}
else
{
Status=FALSE;
}
}
if(TextureImage[0])
{
if(TextureImage[0]->data)
{
free(TextureImage[0]->data);
}
free(TextureImage[0]);
}
return
Status;
}
///////////////////////////////////////////
//我也弄过这个教程一段时间,希望上面的代码对你有帮助,当然,我的这个方法有点取巧了。