OpenGL简单的纹理贴图问题

coogool 2004-11-05 04:56:35
我想将一bmp图贴在一物体表面,不用纹理顶点纹理坐标的话,可以用纹理自动生成函数吗?
就象3ds max中的直接贴图一样(或告诉我3ds max中的默认贴图的坐标映射是怎样的啊?)
望各高手指点一下(新手,刚开始。:))谢谢!!!
...全文
362 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
柴桑 2004-11-08
  • 打赏
  • 举报
回复
顶一下,coogool33,你好,我也在做这方面的导出,有空我们交流交流。我的qq:8721069。
coogool 2004-11-08
  • 打赏
  • 举报
回复
问题自己解决了。谢谢大家。一会结贴。
coogool 2004-11-08
  • 打赏
  • 举报
回复
to:dscky()
好啊
coogool 2004-11-07
  • 打赏
  • 举报
回复
to: Nhsoft(我不是高手) ( )
内容很多,我研究一下先。谢谢!
coogool 2004-11-07
  • 打赏
  • 举报
回复
to:syy64(太平洋) ( )
能否详细说说?
syy64 2004-11-07
  • 打赏
  • 举报
回复
纹理自动生成函数只对有相应的模型才可以用,如圆柱等。
coogool 2004-11-06
  • 打赏
  • 举报
回复
回楼上的,我现在在做一个3DS MAX的转换程序,其中的贴图部分不是很理解。从3DS MAX 中的数据有文理名称和图象名称,可是顶点的文理坐标都没有,我想他是如何自动贴上的呢?分别指定GL-S,GL-T方向的算法可否详细说一下?
coogool 2004-11-06
  • 打赏
  • 举报
回复
楼上的,不好意思,我并非他意。忘了著明出处,见谅!
我是新手,再请教一下,分别指定GL-S,GL-T方向的效果(如果是正方体)和固定文理坐标的方法效果是一样的吗?
houdy 2004-11-06
  • 打赏
  • 举报
回复
如果是二位纹理,你可以分别指定GL-S,GL-T方向。
houdy 2004-11-06
  • 打赏
  • 举报
回复
To:coogool(33)
有点不厚道吧,把我的blog(blog.csdn.net/houdy)中的内容原封不动的帖到这里,也不注明出处?
难道没有看到我的声明么?
关于你的问题:
在很多情况下,纹理坐标都是包含在顶点信息中的,自动生成的纹理坐标是为了作出某种特出效果的,并不是经常用。
潘李亮 2004-11-06
  • 打赏
  • 举报
回复
当然可以。你可以参考我的投影纹理的文章和代码.
在我的主页上。文章是翻译的。代码是我自己写的。视频纹理.用GL来投影
http://xreal.51.net/
coogool 2004-11-06
  • 打赏
  • 举报
回复
现在我想用glTexGeni()函数,可是只有GL-S或GL—T的方向,如果是二维文理,可以用这一函数吗?该如何用呢?
coogool 2004-11-06
  • 打赏
  • 举报
回复
Texture Object的主要思想是用Texture Object来维护某些纹理状态,在渲染阶段将Texture Object和某个Texture Target(OpenGL维护三个Texture Target:GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D)绑定,此过程就相当于将此Texture Object维护的纹理状态选入到OpenGL状态机中,这样此Texture Object维护的状态才会起作用。
Texture Object维护的某些纹理状态包括:
Texture image(s); //纹理图案
Texture Parameter; //由glTexParameter*()函数控制的参数
注意:其他的纹理相关的状态,如Texture Environment和Texture coordinate generation mode并不包含在Texture Objects中。
每个Texture Object的标识符是用一个unsigned int值来表示的,为了确保每个Texture Object的“名字“是唯一的,OpenGL提供了glGenTexture()函数。每个Texture Object在创建的时候,需要调用glBindTexture()将Texture Object和Texture Target(GL_TEXTURE_1D, GL_TEXTURE_2D)连接起来,在使用Texture Object阶段,仍然需要调用glBindTexture()来"激活"此Texture Object.下面用代码演示如何使用Texture Object:
1.创建一个Texture Object:
GLuint uiTextureID;
glGenTexture( 1, &uiTextureID ); //第一个参数指定表明获取多少个连续的纹理标识符
glBindTexture( GL_TEXTURE_2D, uiTextureID ); //
2.设置此Texture Object维护的纹理状态:
LoadBMPff( "Texture.bmp" ); //实际上调用的是glTexImage2D(),指定Texture Image
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
3.重复以上的步骤,可以创建多个Texture Object.
4.在渲染阶段,指定纹理标识符,激活特定Texture Object:
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
glPushMatrix();
glBegin(GL_QUADS);
glBindTexture(GL_TEXTURE_2D,uiTextureID);
glTexCoord2f(0.0,0.0);glVertex2f(-1.0,-1.0);
glTexCoord2f(0.0,1.0);glVertex2f(-1.0,1.0);
glTexCoord2f(1.0,1.0);glVertex2f(1.0,1.0);
glTexCoord2f(1.0,0.0);glVertex2f(1.0,-1.0);
glEnd();
5.不需要时,删除Texture Object:
glDeleteTextures(1,&uiTextureID);
6.使用完毕.
coogool 2004-11-05
  • 打赏
  • 举报
回复
探讨一下,请多up

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧