文档介绍:纹理贴图的步骤指定纹理
1. 创建纹理对象,并为它指定一个纹理• glTexImage1D()
2. 确定纹理如何应用到每个像素上• glTexImage2D()
计算机图形学 3. 启动纹理贴图功能纹理定义
Computer Graphics 4. 绘制场景,提供纹理坐标和几何坐标• glTexImage3D()
第十一讲 OpenGL 中的纹理映射•注意:纹理坐标必须在 RGBA 模式下才可
以使用,在颜色索引模式下使用纹理的结
果是不能预测的
福州大学软件学院陈昱
二维纹理的定义二维纹理的定义其他维数的纹理
• glTexImage2D (GLenum target, GLint level, GLint –Format:图像数据的格式 GL_RGB •除了定义二维纹理外,OpenGL 还支持一维
components, GLsizei width, GLsizei height, GLint 纹理和三维纹理:
border, GLenum format, GLenum type, const –Type:图像数据的类型
• glTexImage1D 映射控制
GLvoid *pixels) GL_UNSIGNED_BYTE
–target:GL_TEXTURE_2D – GL_TEXTURE_1D
–Border: 0 or 1
– level:LOD number (0: base image) • glTexImage3D
–Width & height
– components:number of color – GL_TEXTURE_3D
m
components (1|2|3|4) •2 + 2 (border bit)
•w 和 h 可以不同
一些新的 OpenGL 扩
展已不受这个限制
映射方式的控制设定纹理环境 Texture Environment Modes GL_MODULATE
•之前的课程中提到过,光照和材质影• glTexEnv{if}{v}(GLenum target, • GL_REPLACE •光照会影响到纹理
响多边形上最终各个点的颜色 GLenum pname, TYPEparam); • GL_MODULATE (default) 的显示
•GL_DECAL
•那么,纹理和材质能否同时使用呢? •设置纹理如何与着色相互作用: • GL_BLEND
•可以。OpenGL允许你用 glTexEnv 命–Target:GL_TEXTURE_ENV
令来设置两者如何结合以决定最终的– Pname: GL_TEXTURE_ENV_MODE 新的环境模式:
颜色– Param: modes • GL_ADD: Cv = Cf + Ct
(DECAL|REPLACE|MODULATE|BLEND) • BINE (ARB, see here)
GL_BLEND GL_REPLACE GL_DECAL 纹理+ 光照
•表面颜色由纹理唯
decal:贴花•使用 GL_MODULATE,能显示
一决定出表面的颜色
•在纹理映射之后应用镜面颜色:
– glLightModeli GL_