计算机图形学真的实感图形显示.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.6.1定义纹理 一般情况下,纹理是单个图像,通常是二维的当然也有一维纹理和二维纹理进行图形绘制,调用以下函数定义二维纹理映射: Void glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 其中target指定目标纹理,只能GL_TEXTURE_2D; Level表示多级分辨率的纹理图像的级数,若只有一种分辨率,level为0; Components是从1~4的数,1:选择R; 2:选择RA;3:选择RGB; 4:选择RGBA。 Width,height是纹理大小; Border是指边界宽度,只能是0,1; Format描述映射格式,可以是以下符号常量 Type 表示数据类型,可以是以下常量 Level用于指定不同分辨率的纹理,使用时要考虑纹理滤波的问题 6.6.1定义纹理 一维纹理定义的函数   void glTexImage1D(GLenum target,GLint level,GLint components,GLsizei width,            GLint border,GLenum format,GLenum type,const GLvoid *pixels);   定义一个一维纹理映射。除了第一个参数target应设置为GL_TEXTURE_1D外,其余所有的参数与函数TexImage2D()的一致,不过纹理图像是一维纹素数组,其宽度值必须是2的幂,若有边界则为2m+2。 6.6.2控制纹理滤波 1、滤波 原指纹理图像是个方形图像把它映射到复杂的物体上,一般不能图像上的一个像素对应屏幕的一个象素。因此局部放大或缩小时就要定义合适的滤波方式 void glTexParameter{if}[v](GLenum target,GLenum pname,TYPE param); 第一个参数target可以是GL_TEXTURE_1D或GL_TEXTURE_2D,它指出是为一维或二维纹理说明参数;后两个参数的可能值见表12-1所示。    1、重复与循环 纹理映射可以重复映射或缩限映射,重复映射对纹理可以在自己的坐标S,T方向重复。 glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAR_S,GL_REPEAT); glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAR_T,GL_REPEAT); 对于约简映射,有 glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAR_S,GL_CLAMP); glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAR_T,GL_CLAMP); 6.6.2控制纹理滤波 2、 前者是放大滤波,后者是缩小滤波 glTexParameter*(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);   glTexParameter*(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 若选择GL_NEAREST则采用坐标最靠近象素中心的纹素,这有可能使图像走样;若选择GL_LINEAR则采用最靠近象素中心的四个象素的加权平均值。GL_NEAREST所需计算比GL_LINEAR要少,因而执行得更快,但GL_LINEAR提供了比较光滑的效果。 6.6.3 映射方式 定义纹理映射方式是指认定纹理图像映射到目标及以获得最终RGBA值的方式。OpenGL提供了三种纹理映射方式,一种是简单地把纹理地颜色作为最终地颜色来使用,这叫刻纸方式;另一种是使用纹理来调节目标区地颜色,以获得最终的颜色;最后是使用纹理颜色和目标区颜色相融合。这些细节可以用设置纹理环境的方式来控制。 6.6.3 映射方式 OpenGL通过一下命令设置纹理环境: Void glTexEnv{i f}(GLenum target,GLenum pname,TYPE param); Void glTexEnv{i f}v(GLenum target,GLenum pname,TYPE params); 在函数中,参数target必须取GL_TEXTURE_ENV;pname指定被设置参数不符号常量,若是GL_TEXTURE_ENV_MODE,则param可以式GL_DECAL,GL

文档评论(0)

sandaolingcrh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档