|
|
我的天空贴图为什么没效果?
这是和贴图相关的函数
//初始化
CTarecView::CTarecView()
{
LoadT8("Groud.bmp", g_cactus[0]); //地面贴图
LoadT8("4RBack.bmp",g_cactus[2]); //天空贴图后
LoadT8("4Front.bmp",g_cactus[3]); //天空贴图前
LoadT8("4Top.bmp", g_cactus[4]); //天空贴图顶
LoadT8("4Left.bmp", g_cactus[5]); //天空贴图左
LoadT8("4Right.bmp",g_cactus[6]); //天空贴图右
glEnable(GL_TEXTURE_2D);//开启纹理
}
//天空盒
void CTarecView::SkyBox(float x, float y, float z)
{
x = 0.0; y = 0.0; z = 0.0;
texture(g_cactus[2]);//天空贴图后
glBegin(GL_QUADS);
//glColor3f(.0f,.0f,1.0f);//蓝
glTexCoord2f(1.0f,0.0f); glVertex3f(-x-100,-y-100,z);
glTexCoord2f(1.0f,1.0f); glVertex3f(-x-100,-y-100,z+200);
glTexCoord2f(0.0f,1.0f); glVertex3f(x+100,-y-100,z+200);
glTexCoord2f(0.0f,0.0f); glVertex3f(x+100,-y-100,z);
glEnd();
texture(g_cactus[3]);//天空贴图前
glBegin(GL_QUADS);
//glColor3f(1.0f,.0f,0.0f);//红
glTexCoord2f(1.0f,0.0f); glVertex3f(x+100,y+100,z);
glTexCoord2f(1.0f,1.0f); glVertex3f(x+100,y+100,z+200);
glTexCoord2f(0.0f,1.0f); glVertex3f(-x-100,y+100,z+200);
glTexCoord2f(0.0f,0.0f); glVertex3f(-x-100,y+100,z);
glEnd();
texture(g_cactus[4]);//天空贴图顶
glBegin(GL_QUADS);
//glColor3f(.0f,1.0f,0.0f);//绿
glTexCoord2f(0.0f,1.0f); glVertex3f(x+100,y+100,z+200);
glTexCoord2f(0.0f,0.0f); glVertex3f(-x-100,y+100,z+200);
glTexCoord2f(1.0f,0.0f); glVertex3f(-x-100,-y-100,z+200);
glTexCoord2f(1.0f,1.0f); glVertex3f(x+100,-y-100,z+200);
glEnd();
texture(g_cactus[5]);//天空贴图左
glBegin(GL_QUADS);
//glColor3f(1.0f,0.5f,1.0f);//血清
glTexCoord2f(1.0f,1.0f); glVertex3f(-x-100,y+100,z);
glTexCoord2f(0.0f,1.0f); glVertex3f(-x-100,y+100,z+200);
glTexCoord2f(0.0f,0.0f); glVertex3f(-x-100,-y-100,z+200);
glTexCoord2f(1.0f,0.0f); glVertex3f(-x-100,-y-100,z);
glEnd();
texture(g_cactus[6]);//天空贴图右
glBegin(GL_QUADS);
//glColor3f(1.0f,1.0f,0.0f);//黄
glTexCoord2f(0.0f,0.0f); glVertex3f(x+100,y+100,z);
glTexCoord2f(1.0f,0.0f); glVertex3f(x+100,-y-100,z);
glTexCoord2f(1.0f,1.0f); glVertex3f(x+100,-y-100,z+200);
glTexCoord2f(0.0f,1.0f); glVertex3f(x+100,y+100,z+200);
glEnd();
}
//纹理影射模式
void CTarecView::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);
}
//载入纹理数据
bool CTarecView: oadT8(char *filename, GLuint &texture)
{
AUX_RGBImageRec *pImage = NULL;
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;
}
/*************************************************************************************************/
执行LoadT8函数中的glGenTexture()语句后texture值不发生任何变化。
也就是说根本载入不了纹理
是什么原因呢?
望高人指点
附件为完整源程序,高人帮忙看一下!
多谢 |
|