当前位置:文档之家› OpenGL中的纹理映射-纹理环境void glTexEnv{if}[v](GLenum target

OpenGL中的纹理映射-纹理环境void glTexEnv{if}[v](GLenum target

20
GL_TEXTURE_2D
18
OpenGL中的纹理映射-纹理启用与关闭
glEnable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
19
void setTexture2(void) { FILE* fd; GLubyte ch; int i,j,k; fd=fopen("../HongKong.256.256.raw","r"); for (i=0;i<TEX_WIDTH;i++) { for (j=0; j<TEX_HEIGHT;j++) { for (k=0;k<3;k++) { fread(&ch,1,1,fd); texImage[i][j][k]=(GLubyte)ch; } } } fclose(fd); }
进行纹理映射
建立纹理与三维物体之间的对应关系 扰动法向量
6
纹理空间
纹理定义在单位正方形区域 (0 u 1, 0 v 1) 之上,称为纹理空间
纹理函数是定义在此空间上的函数 纹理空间也可用其他方法定义
用参数曲面的参数域作为纹理空间 2D 用辅助平面、圆柱、球定义纹理空间 2D 用三维直角坐标作为纹理空间 3D
15
OpenGL中的纹理映射-纹理环境
void glTexEnv{if}[v](GLenum target,GLenum pname,TYPE param); 可以用纹理中的值Ct来调整多边形(曲面) 原来的颜色Cf,或用纹理图像中的颜色与多 边形(曲面)原来的颜色进行混合。
GL_DECAL Ct GL_MODULATE Ct Cf GL_BLEND Cf (1-Ct)
13
OpenGL中的纹理映射-纹理定义
void glTexImage2D (GLenum target,GL_TEXTURE_2D GLint level,只有一种分辨率,则level设为0 GLint components, 3表示选择了R、G、B三个分量 GLsizei width,纹理图像的长度宽度 glsizei height, GLint border,纹理图像的边界宽度,通常为0 GLenum format,纹理映射的格式和数据类型 GLenum type,纹理映射的数据类型 const GLvoid *pixels);纹理图像数据
12
OpenGL中的纹理映射figure8.3.c
基本步骤如下:
定义纹理;glTexImage2D 控制纹理; glTexParameter{if}[v] 纹理环境;void glTexEnv{if}[v] 绘制场景,给出顶点的纹理坐标和几何坐标。
纹理映射只能用于RGBA颜色模式。
二维纹理域,三维图形场景物体,二维纹理 映射是一种非线性映射
纹理变形 不能保证纹理连续性
纹理空间定义在三维空间上,与物体空间是 同维的,通过物体空间坐标(x,y,z)来计算 纹理坐标(u,v,w) 把场景中的物体变换到纹理空间的局部坐标 系中去
11
几何纹理
几何纹理方法-对物体表面几何性质作微小 扰动,产生凹凸不平的细节效果,给物体表 面图象加上一个粗糙的外观
颜色纹理
一维纹理,
二维纹理,物体表面花纹、图案 三维纹理,
几何纹理,基于物体表面的微观几何形状
法向扰动
5
纹理映射
纹理映射是把纹理图象值映射到三维物体的表面的技术,以 便于使用简单的几何图产生丰富逼真的视觉效果图像 纹理映射的问题
纹理定义方法:
图象纹理:将二维纹理图案映射到三维物体表面,绘制物体 表面上一点时,采用相应的纹理图案中相应点的颜色值。 函数纹理:用数学函数定义简单的二维纹理图案,如方格地 毯。或用数学函数定义随机高度场,生成表面粗糙纹理即几 何纹理
14
OpenGL中的纹理映射-纹理控制
void glTexParameter{if}[v] (GLenum target,GLenum pname, TYPE param); ______________________________________________ 参 数 值 ______________________________________________ GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_CLAMP 大于1的纹素值都置为1,小于0的置为0 GL_REPEAT 重复映射
7
二维纹理映射
二维纹理映射技术:贴墙纸
三个空间
纹理空间:二维图像 景物空间:物体 图像空间:屏幕
两个映射关系
纹理空间与景物空间的映射? 景物空间与图像空间的映射:一旦确定相机参数, 即可由取景变换及其逆变换确定
8
二维纹理映射示意图
9
参数映射
10
三维纹理域的映射
GL_TEXTURE_MAG_FILTER 放大滤波方法 GL_TEXTURE_MIN_FILTER 缩小滤波方法 GL_NEAREST 最靠近象素中心的纹素 GL_LINEAR 最靠近象素中心的四个象素的加权平均值 ______________________________________________
第8章 纹理映射
解决计算机生成真实感图象缺乏现实物体表 面细节的问题
1
纹理例子
2
纹理的概述
用简单光照明模型生成真实感图象,由于表 面过于光滑单调,反而显得不真实 现实物体表面有各种表面细节-纹理
木材表面的木纹 建筑物墙壁上的装饰图案 桔子皮表面的皱纹
3示例4源自理 纹理是物体表面的细小结构 纹理类型
16
OpenGL中的纹理映射-纹理坐标
坐标定义
void glTexCoord{1234}{sifd}[v] (TYPE coords);
17
OpenGL中的纹理映射-多个纹理
void glGenTextures( GLsizei n, GLuint *textures ); void glBindTexture( GLenum target, GLuint texture );
相关主题