基于OpenGL纹理贴图技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于OpenGL纹理贴图技术

基于OpenGL纹理贴图技术   摘 要:纹理贴图是增强3D场景真实感的技术基础,主要介绍了基于OpenGL的纹理贴图技术,包含实现OpenGL纹理贴图的基本步骤,以及纹理贴图各环节的技术要点,对OpenGL Mip贴图的原理和实现方法也进行了简要的介绍。??   关键词:纹理贴图;3D;真实感;OpenGL;Mip贴图??   中图分类号:TP391.4 文献标识码:A 文章编号:1672-7800(2011)03-0169-03?お?   ??   作者简介:杨键(1981-),男,四川成都人,硕士,四川大学锦城学院助教,研究方向为图形图像处理;张敏(1983-),男,四川成都人,硕士,西南民族大学助教,研究方向为嵌入式系统。         0 引言??   OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数,能够利用OpenGL函数库实现各种三维物体的绘制,为实现三维物体的真实模拟必须引入纹理贴图技术,以便增强三维场景绘制的真实感,并能提高三维场景的渲染速度。本文将着重介绍以C语言和OpenGL相结合以实现三维物体的纹理贴图过程,讲述OpenGL纹理贴图的基本步骤以及相关技术要点。??   1 纹理贴图??   1.1 载入纹理??    将纹理贴图应用到几何图形的第一个必要步骤就是将纹理载入到内存之中。已经载入之后,这个纹理就成为当前的纹理状态的一部分。??    载入纹理的函数有3种,分别对应于一维、二维和三维纹理,如下:??    (1)一维纹理定义函数。void glTexImage1D(GLenum target,GLint level,GLint components,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid *pixels);??   ??    (2)二维纹理定义函数。void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid *pixels);??    (3)三维纹理定义函数。void glTexImage3D(GLenum target,GLint level,GLint components,GLsizei width,GLsizei height,GLsizei depth ,GLint border,GLenum format,GLenum type,const GLvoid *pixels);??   函数参数说明:??   上述3个函数实际上只是同1个根函数glTextImage的不同类型,OpenGL支持一维、二维和三维的纹理贴图,使用对应的函数来载入纹理,并将其作为当前纹理。使用上述函数时,OpenGL从data参数所指向的位置复制纹理信息。??   3个函数的target参数分别是GL_TEXTURE_1D、GL_TEXTURE_2D或GL_TEXTURE_3D。??   Level参数指定了这些函数所载入的mipmap层。对于非mipmap的纹理,这个参数设置为0。??   Information参数告诉OpenGL希望在每个纹理单元中存储多少颜色成分。??   Width、height和depth参数指定了被载入纹理的宽度、高度和深度。这些值必须是2的整数次方。??   Border参数允许为纹理贴图指定一个边界宽度。??   Format和type参数描述了纹理图像数据的格式和数据类型。??   1.2 纹理对象??    纹理对象是用来存储纹理数据的,以备随时使用。创建了纹理对象,就能够将多个纹理一次性载入内存,以便场景绘制期间随时引用其中的任何一个纹理。??   1.2.1 纹理名字的生成??    使用纹理对象,首先需要生成纹理名称。纹理名可以是一个非0的无符号整数,为确保不重复使用同一个纹理名,可以调用glGenTextures( )函数:??    Void glGenTextures(GLsizei n,GLuint *textureNames);??    参数n指定了将有多少个纹理名被生成并存入textureNames数组中。??   1.2.2 纹理对象的创建和使用??    生成纹理名之后还必须将纹理名“绑定”到纹理数据上,可以调用glBindTexture()函数来实现此项任务:??    Vo

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档