游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3766|回复: 11

很棘手的问题

[复制链接]

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2006-7-2 20:00:00 | 显示全部楼层 |阅读模式
今天尝试着往简单几何体上贴图,但无论我是对照教程书籍的做法还是别的,都无法实现贴图,后来我干脆只绘制一个面,就让纹理只往这个面上贴,但都不行,我还尝试着旋转角度,看是否把纹理贴在了这个面的背后 —— 没有!!
我把代码翻来覆去地看了N遍也找不出错漏处......呀~~真是烦死了.....跪请大侠帮我一把,解决问题所在吧...
我把主要的两段代码列写在这里.另外还把程序提交上来(因为文件容量达1.2M我分包压缩了).
为节省大侠们检阅我这些垃圾代码的时间,我对这两段代码作一下简要说明:
第一段 是窗口创建并显示后对OpenGL视口的设置函数,里面直接包含了载入贴图文件的代码。
第二段 就是在绘出那个平面四边形并进行贴图操作的代码。

GLuint vein[1];   //存储纹理(全局)
//第一段代码:
void GL_Viewport(int Width, int Height) //设置OpenGL的视口
{
        glViewport(0,0,Width,Height);         //设置GL的视口大小
        glMatrixMode(GL_PROJECTION);          //设置当前矩阵为投影矩阵
        glLoadIdentity();                     //重置当前指定的矩阵为单位矩阵
        gluPerspective(45.0f,Width/Height,1.0f,1000.0f);
        glMatrixMode(GL_MODELVIEW);           //设置当前矩阵为模型视图矩阵
        glLoadIdentity();                     //重置当前指定的矩阵为单位矩阵

        AUX_RGBImageRec *m[1];                //创建纹理的存储空间
        m[0] = auxDIBImageLoad("/Yellobrk.bmp");
        if(m[0]==NULL)MessageBox(NULL,"位图无法装入","错误",MB_ICONERROR);
        glGenTextures(1,&vein[0]);            //生成1个贴图(纹理)
        glBindTexture(GL_TEXTURE_2D,vein[0]); //使数据与XXXXXXXXX绑定
        glTexImage2D(
                      GL_TEXTURE_2D,
              0,
                      3,
              m[1]->sizeX,
                      m[1]->sizeY,
              0,
              GL_RGB,
                      GL_UNSIGNED_BYTE,
              m[0]->data
                    );
        free(m[0]->data);//释放纹理空间的内存资源
        free(m[0]);

//第二段代码: OpenGL绘图的过程了....
void Render()
{
        glClearColor(0.0f,0.0f,0.0f,0.0f);                 //设置刷新背景色
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//刷新背景
        glLoadIdentity();                                  //重置当前视图

        glBindTexture(GL_TEXTURE_2D,vein[0]); //选择纹理
        glRotatef(r,0,1,1);
        glPushMatrix();
        glEnable(GL_TEXTURE_2D);
              glBegin(GL_QUADS);
                                glTexCoord2f(0.0f,0.0f); glVertex3f(0.0f,0.0f,-0.0f);
                                glTexCoord2f(1.0f,0.0f); glVertex3f(0.5f,0.0f,-0.0f);
                        glTexCoord2f(1.0f,1.0f); glVertex3f(0.5f,0.5f,-0.0f);
                        glTexCoord2f(0.0f,1.0f); glVertex3f(0.0f,0.5f,-0.0f);
              glEnd();
        glDisable(GL_TEXTURE_2D);
        glPopMatrix();
        glFlush();//更新窗口
        SwapBuffers(hdc);//切换缓冲区
}
==========================
先多谢热心的大侠!! [em5]
sf_20067220018.jpg

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2006-7-2 20:03:00 | 显示全部楼层

程序文件

~~~~

sf_20067220234.rar

500 KB, 下载次数:

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2006-7-2 20:06:00 | 显示全部楼层

第二个包

真抱歉,要分三个贴上传这个压缩包... [em5]

sf_2006722064.rar

500 KB, 下载次数:

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2006-7-2 20:07:00 | 显示全部楼层

第三个包

最后一个了

sf_20067220651.rar

270.39 KB, 下载次数:

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2006-7-4 22:51:00 | 显示全部楼层

Re:很棘手的问题

哎....怎么连个贴图问题都没有人能解决啊.????

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2006-7-5 16:00:00 | 显示全部楼层

Re:很棘手的问题

你的纹理贴图用bitmap的宽高是否是2的幂次方?把它变成64x64的试一下。

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2006-7-5 16:11:00 | 显示全部楼层

Re: 很棘手的问题

我把你的程序下载并且修改运行,在我这里没有问题。

我唯一修改的地方就是bitmap的载入代码,使用了我自己代码。

没有使用aux,你检查一下你的bitmap载入部分吧!
sf_200675161120.jpg

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2006-7-5 16:17:00 | 显示全部楼层

Re:很棘手的问题



glTexImage2D(
                      GL_TEXTURE_2D,
      0,
                      3,
      m[1]->sizeX,
                      m[1]->sizeY,
      0,
      GL_RGB,
                      GL_UNSIGNED_BYTE,
      m[0]->data
                    );

之前加上

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

以设置最大或最小化模型时的纹理过滤模式。

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2006-7-5 19:02:00 | 显示全部楼层

回复7楼的Twinsen82

我已经尝试过修改载入位图的那部分代码,唐明理的试过了,HeHe的也试过了,但他们的代码也各有不同....例如HeHe的代码里在载入位图的代码段中还加入了过滤显示的代码,.而唐先生的则没有,可一样能显示....
请Twinsen82把你修改的文件发给我参考好吗....先感谢你了.

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2006-7-6 09:39:00 | 显示全部楼层

Re:很棘手的问题

你是否试过我在8楼给的修改意见?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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