纹理映射

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

生成纹理对象名称
glGenTexture(GLsizei n, GLuint *textureNames)
通过数组textureNames返回n个未用的纹理对 象名。
创建和使用纹理对象
glBindTexture(GLenum target, GLuint textureName) 如果参数textureName为非零的无符号整数, 且首次被使用,将创建一个新的纹理对象,并 将其名称设置为textureName的值; 绑定一个已创建的纹理对象时,该纹理对象将 进入活动状态; 首次绑定一个纹理对象时,参数target指定纹 理维数:GL_TEXTURE_2D为二维纹理。
纹理过滤处理
纹理图是正方形或矩形的,但是在映射到多边 形或物体表面,转换成屏幕坐标后,纹理图中 单个纹理的单元却很少能够与最终屏幕图像中 的单个纹理单元一一对应。根据使用的变换和 纹理映射,在屏幕上的一个像素点可以与一个 纹理单元中的小部分(放大后),到许多纹理 单元的集合(缩小后)。由于应该使用哪一个 纹理单元值,以及如何对这些单元进行平均或 插值,是无法确切地知道地,OpenGL允许程 序员指定的某一种过滤方法来决定这些计算。
纹理的重复和截取
对纹理坐标超出[0,1]之外的,在纹理图中对 这些坐标进行截取和重复。 在纹理重复期间,忽略纹理坐标的整数部分, 并且将纹理图的拷贝粘贴在物体表面上。 截取纹理坐标是:将任何大于1.0的值设置为 1.0,将任何小于0.0的值设置为0.0。
纹理的重复和截取
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GLREPEAT); glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GLREPEAT); 对二维纹理图,当纹理坐标超出[0,1]时,纹理 同时在S和T两个方向进行重复。
纹理过滤方式
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 当纹理放大时,用GL_NEAREST模式进行过滤。 glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 当纹理缩小时,用GL_NEAREST模式进行过滤。 GL_NEAREST:将坐标最靠近像素中心的纹理单 元用于放大和缩小过滤。
指定纹理
glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *textls) target:GL_TEXTURE_2D level:当纹理图只有一种分辨率时,level为0 components:1.1版本GL_RGBA,在描述一个图像的 纹理单元时,用R、G、B、A分量;当1.0版本时,用 4 border:指明边界的宽度,0表示没有边界 format:图像的数据格式 textls:图像的数据类型
纹理映射
纹理对象wk.baidu.com
纹理对象用于存储纹理数据,并使之可用。 使用纹理对象的步骤:
1. 2. 3. 4. 5.
6.
生成纹理对象名称(glGenTextures) 创建纹理对象(glBindTexture) 指定纹理映射方式(glTexParameteri) 指定纹理(glTexImage2D) 绑定和重新绑定纹理对象,以便可以将其中的 纹理映射到物体上。 分配纹理坐标(glTexCoord2f)
相关文档
最新文档