游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2269|回复: 4

无法载入纹理

[复制链接]

2

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2007-3-22 10:02:00 | 显示全部楼层 |阅读模式
我的天空贴图为什么没效果?
这是和贴图相关的函数
//初始化
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值不发生任何变化。

也就是说根本载入不了纹理


是什么原因呢?

望高人指点

附件为完整源程序,高人帮忙看一下!

多谢

3

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2007-3-22 10:22:00 | 显示全部楼层

Re:无法载入纹理

是不是在glGenTexture()后,程序就已经退出了啊,那就是前一步读文件的时候出问题?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-3-22 15:41:00 | 显示全部楼层

Re: 无法载入纹理

calyz2004: 无法载入纹理
执行LoadT8函数中的glGenTexture()语句后texture值不发生任何变化

为什么你的是 glGenTextures(1, &texture); 呢?
我记得 NEHE教程里的是 glGenTextures(6, texture[0]);
还有,初始化要有
uint texture[6];
[em5]

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-3-22 23:34:00 | 显示全部楼层

Re:无法载入纹理

glGetRrror()...调试

2

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2007-3-23 20:35:00 | 显示全部楼层

Re:无法载入纹理

已解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 19:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表