高级计算机图形学OpenGL纹理映射

合集下载

opengl立方体 36个顶点与纹理坐标

opengl立方体 36个顶点与纹理坐标

opengl立方体 36个顶点与纹理坐标OpenGL是一个跨平台的图形库,它可以使用三维图形来模拟物体的外观和行为。

本文将讨论如何使用OpenGL绘制一个立方体,同时为每个面分配不同的纹理坐标,使它看起来更逼真。

步骤1:定义顶点在OpenGL中,立方体通常由8个顶点组成。

这些顶点可以通过三个轴上的坐标定义。

通过定义这些坐标,我们可以为立方体创建3D 空间。

步骤2:定义面和法向量为了呈现立方体的表面,我们需要定义立方体的面。

每个面都由四个顶点组成,可以通过将面上的顶点连接起来来定义它们。

为了计算光照的效果,我们还需要为每个面定义一个法向量。

步骤3:定义纹理坐标将纹理贴在立方体表面上,需要为每个面分配纹理坐标。

OpenGL 中,纹理坐标以0到1的范围表示。

面上各个顶点的纹理坐标被映射到整张纹理上,这样就可以使用纹理贴图来呈现立方体了。

例如,我们可以使用土地的纹理来描绘立方体的底面,并使用天空的纹理来描绘立方体的顶面。

步骤4:渲染立方体在OpenGL中,我们使用三角形绘制立方体的每个面。

每个面有两个三角形来呈现,它们都使用以前定义的顶点。

步骤5:使用着色器改进绘制为了让立方体更加逼真,我们可以使用着色器改进绘制。

着色器是OpenGL中的一种编程,它可以处理渲染过程中的颜色、光照和纹理问题。

我们可以使用着色器来为立方体添加光影效果,使其看起来更加真实。

总结在本文中,我们探讨了如何使用OpenGL绘制立方体,并为每个面分配了纹理坐标。

我们还讨论了如何使用着色器来改进绘制。

通过使用OpenGL,我们可以创建出更加逼真的三维物体,这可以应用于游戏开发、模拟和虚拟现实等领域。

纹理映射原理

纹理映射原理

纹理映射原理纹理映射是计算机图形学中一项重要技术,它能够使得我们在二维平面上将纹理贴到三维物体表面,从而增加真实感和细节。

在这个过程中,纹理映射使用了几种关键概念和原理。

首先,纹理映射使用了纹理坐标来描述物体表面上各点和纹理图像中像素的对应关系。

纹理坐标可以看作是物体表面上的一个点在纹理图像中的位置。

通常,纹理坐标是由两个浮点数(u, v)表示,范围一般是[0, 1]。

通过纹理坐标,我们可以在纹理图像中确定应该对应到物体表面上的纹理像素。

当计算机渲染三维物体时,纹理映射的第一步是将纹理坐标映射到物体表面上的每个顶点。

这个过程是通过纹理坐标的插值来实现的,通常使用三角形插值的方法,将纹理坐标从顶点插值到三角形的内部。

一旦顶点的纹理坐标已经确定,接下来的步骤是在三角形内部的每个像素上进行纹理采样。

纹理采样过程是通过纹理过滤器实现的。

常用的纹理过滤器包括最邻近采样、双线性插值和三线性插值等。

最邻近采样是一种简单的方法,它通过找到离目标像素最近的纹理像素进行采样。

双线性插值则是通过对目标像素周围的四个纹理像素进行加权平均来得到采样结果,这样可以平滑过渡纹理。

而三线性插值是双线性插值的扩展,它通过对两个不同分辨率的纹理图像进行双线性插值采样,实现了更好的纹理细节表现。

纹理映射最常用的应用之一是纹理映射贴图。

这是通过将纹理图像贴到三维物体表面来实现纹理映射。

贴图包含了物体表面的颜色和纹理信息,以及表面法线和材质属性等。

在贴图中,每个像素的颜色通常由纹理坐标和相应的纹理采样获得。

通过适当的纹理坐标和纹理过滤器,我们可以在渲染过程中实时调整物体的表面质感,从而产生逼真的效果。

纹理映射还可以用于实现其他图形效果,例如投影纹理映射和镜面反射。

投影纹理映射通过将纹理图像投射到物体表面上,产生伪影的效果。

镜面反射则通过将环境图像或虚拟场景映射到物体表面上,使物体表面看起来像一个镜子,反射周围环境的景象。

综上所述,纹理映射是计算机图形学中的重要技术,通过使用纹理坐标、插值和采样等方法,将纹理图像贴到三维物体表面上,实现细节和真实感的增加。

计算机形学纹理映射基础知识全面解析

计算机形学纹理映射基础知识全面解析

计算机形学纹理映射基础知识全面解析计算机形学纹理映射是图形图像处理中一个重要的技术,它可以将纹理图像映射到三维模型的表面上,使得模型表面呈现出细腻的纹理效果。

在计算机图形学和计算机视觉领域,纹理映射被广泛应用于三维建模、游戏开发、虚拟现实、电影特效等方面。

本文将对计算机形学纹理映射的基础知识进行全面解析,包括纹理的表示、纹理坐标映射、纹理过滤和纹理映射技术的应用等内容。

一、纹理的表示纹理是一种通过图像来描述物体表面外观的技术。

计算机中,纹理可以用一幅位图来表示。

位图是由一系列像素点组成的二维矩阵,每个像素点的颜色值通过RGB模型来表示。

在纹理映射中,我们常用的纹理图像格式有BMP、JPEG、PNG等。

这些图像格式不仅可以表示颜色信息,还可以表示其他图像特征,比如透明度、反射率等。

纹理图像的大小通常是2的幂次方,例如256×256、512×512等。

二、纹理坐标映射纹理映射的基本原理是将纹理图像中的像素映射到模型表面上的坐标。

为了实现这一映射,需要给模型的每个顶点指定一个纹理坐标。

纹理坐标是一个二维坐标,通常用(u, v)表示。

顶点的纹理坐标决定了其在纹理图像中的采样位置。

通过对纹理坐标的插值或者变换,可以得到模型表面上每个点所对应的纹理坐标,从而获取纹理图像中的像素值。

这样,模型表面上的每个点都可以呈现出纹理图像中所对应的颜色。

三、纹理过滤纹理过滤是纹理映射中一个重要的技术,它处理了三维模型表面和纹理图像之间的采样问题。

在纹理映射中,对于模型表面上一个离散的点,需要从纹理图像中获取它所对应的纹理值。

由于纹理图像的像素点是有限的,而模型表面上的点是连续的,因此需要对纹理进行采样过滤。

常用的纹理过滤算法有最近邻采样、双线性插值、三线性插值等。

这些过滤算法可以有效减少纹理映射过程中的失真,提高纹理映射的质量。

四、纹理映射技术的应用纹理映射技术在计算机图形学和计算机视觉领域有着广泛的应用。

计算机形学的纹理映射

计算机形学的纹理映射

计算机形学的纹理映射计算机图形学中的纹理映射是一种常见且广泛应用的技术,用于增强三维模型的真实感和细节。

本文将探讨纹理映射的概念、原理和应用,并分析其在计算机图形学领域中的重要性。

一、概述纹理映射是一种将二维图像贴附到三维模型表面的过程。

它通过在三维模型的表面上粘贴纹理图像来模拟真实世界中的材质和细节。

纹理映射可以使平凡的三维模型变得生动,并为渲染引擎提供更真实的光照效果。

二、纹理映射的原理纹理映射的原理可简单描述为以下三个步骤:1. 纹理坐标的计算:为了将二维纹理贴附到三维模型表面上,首先需要计算每个顶点的纹理坐标。

纹理坐标是一个二维向量,指示了纹理图像中的像素位置。

2. 纹理插值:一旦获得了每个顶点的纹理坐标,渲染引擎会根据每个像素的位置在顶点之间进行插值计算,以确定其在纹理图像中的位置。

这样可以确保纹理图像均匀地覆盖整个三维表面。

3. 纹理采样:根据插值计算的纹理坐标,渲染引擎从纹理图像中采样像素值。

采样过程将决定每个像素的颜色和纹理特征。

三、纹理映射的应用纹理映射在计算机图形学中有广泛的应用。

以下是几个常见的应用领域:1. 视觉效果:纹理映射可用于创建逼真的视觉效果,如岩石、树木的表面纹理。

通过将真实世界的图像应用到模型上,可以使其看起来更加真实。

2. 游戏开发:游戏中的角色、场景和物体通常都需要进行纹理映射。

纹理映射可以为游戏提供更好的视觉效果,并增加游戏的沉浸感。

3. 虚拟现实:纹理映射是虚拟现实技术中不可或缺的一部分。

通过在虚拟环境中应用纹理,可以增强用户感知,使其更好地融入虚拟世界。

4. 增强现实:纹理映射在增强现实应用中也扮演着重要角色。

通过在现实世界中投射纹理,可以实现虚拟物体与真实世界的交互。

结论纹理映射是计算机图形学中的重要技术之一,通过将二维纹理应用于三维模型的表面,可以增强模型的真实感和细节。

它在视觉效果、游戏开发、虚拟现实和增强现实等领域都有广泛应用。

纹理映射的原理和应用需要综合考虑,以确保最佳的效果和性能。

纹理映射技术

纹理映射技术

2. 如何映射
• 利用纹理坐标来定义从图片到几何的映射:
– 要将该纹理映射到一个三角形上, 需设置三角形的 三个顶点在图像空间上的纹理坐标[tx ty], 再对应计 算每个几何像素在纹理图像上的对应RGB颜色;
– 一般一个四边形的纹理坐标: (0,0)(0,1)(1,0)(1,1)
– 3D Game Studio.
3. 纹理插值
• 我们只指定了三角形顶点处的纹理坐标,中间每个象素 的纹理坐标(ti, tj)可用线性插值;
• 一般双线性插值;
• 从而三角形上每个象素点都可对应地到纹理图片上去 取颜色.
思考?
• 图像与几何体的尺寸不一致怎么办?
• 几何对应的纹理空间超出[0,1)纹理空间怎么办? • 几何物体本身有颜色怎么办?
(1,1)
t1
v1
y
t2 t0
(0,0)
x
Texture Space
v0
v2
Triangle (in any space)
纹理空间与模型空间的对应
基本实现步骤:
• Three steps
-Specify texture
• Read or generate image • Assign to texture • Enable texturing
Texture Space
(1,1) (0,0)
Mirroring
常用对应函数
• wrap or tile: 纹理图像在表面重复。例子:地上的大理石 贴图
• mirror: 纹理图像在表面重复, 但每隔一幅进行翻转 (flipped)。这样在纹理的边界处,纹理可以保持连续。
• clamp : 把[0,1)范围之外的进行截断。截断到[0,1)内的半 个纹素。

纹理映射方法

纹理映射方法

纹理映射方法纹理映射方法是计算机图形学领域中非常重要的一部分,它能够为计算机生成的图像赋予更真实的外观和细节。

随着计算机技术的不断发展和进步,纹理映射方法也在不断演化和改进。

本文将详细介绍纹理映射方法的概念、原理、分类以及在计算机图形学领域中的应用,希望能够对读者有所帮助。

一、纹理映射方法的概念纹理映射是将一个二维图像或纹理图像映射到三维物体表面上的过程。

通俗地说,就是将一张图片贴到三维物体上,以增加真实感和细节。

纹理映射方法主要包括纹理坐标的映射和纹理像素的采样。

纹理坐标的映射是将三维物体上的顶点坐标映射到二维纹理坐标系上,从而确定纹理图像上相应的位置。

而纹理像素的采样则是根据纹理坐标从纹理图像中获取颜色信息,然后应用到物体表面上。

二、纹理映射方法的原理纹理映射的基本原理是在给定的纹理坐标系下,将三维物体表面上的点映射到二维纹理图像上,并根据映射到的位置从纹理图像中获取相应的颜色信息。

这样可以为物体表面赋予更加细致的纹理和外观,进而增加真实感和视觉效果。

三、纹理映射方法的分类根据不同的映射方式和实现技术,纹理映射方法可以分为多种类型,包括:简单纹理映射、投影纹理映射、环境纹理映射、积分纹理映射、多层纹理映射等。

简单纹理映射是最基本的纹理映射方法,它将纹理图像简单地贴到物体表面上。

投影纹理映射是根据投影方式将纹理映射到物体表面上,常见的有透视投影和正交投影。

环境纹理映射是根据物体表面法向量和观察者位置确定纹理颜色,实现物体表面的反射和折射效果。

积分纹理映射是通过对纹理图像进行积分来模拟散射光效果,以增加真实感。

多层纹理映射是将多个纹理图像叠加到物体表面上,以实现更加复杂的效果。

四、纹理映射方法在计算机图形学中的应用纹理映射方法在计算机图形学中有着广泛的应用,包括游戏开发、动画制作、虚拟现实等领域。

在游戏开发中,通过精细的纹理映射方法,可以使游戏场景和角色更加逼真,增加游戏的沉浸感和真实感。

动画制作中,纹理映射方法可以为角色表面赋予更加真实的皮肤质感和细节,提升动画的观赏性。

opengl算法学习---纹理映射

opengl算法学习---纹理映射

opengl算法学习---纹理映射纹理映射纹理映射(Texture Mapping),⼜称纹理贴图,是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。

简单来说,就是把⼀幅图像贴到三维物体的表⾯上来增强真实感,可以和光照计算、图像混合等技术结合起来形成许多⾮常漂亮的效果。

纹理纹理可看成是⼀个或多个变量的函数,因此根据纹理定义域的不同,纹理可分为⼀维纹理、⼆维纹理、三维纹理和⾼维纹理。

基于纹理的表现形式,纹理⼜可分为颜⾊纹理、⼏何纹理两⼤类。

颜⾊纹理指的是呈现在物体表⾯上的各种花纹、图案和⽂字等,即通过颜⾊⾊彩或明暗度的变化体现出来的细节。

如⼤理⽯墙⾯、墙上贴的字画器⽫上的图案等。

⼏何纹理(也可称为凹凸纹理)是指基于景物表⾯微观⼏何形状的表⾯纹理,如桔⼦、树⼲、岩⽯、⼭脉等表⾯呈现的凸凹不平的纹理细节。

⽣成颜⾊纹理的⼀般⽅法是在⼀个平⾯区域(即纹理空间)上预先定义纹理图案,然后建⽴物体表⾯的点与纹理空间的点之间的对应—即映射。

以纹理空间的对应点的值乘以亮度值,就可把纹理图案附到物体表⾯上⽤类似的⽅法给物体表⾯产⽣凹凸不平的外观或称凹凸纹理。

普通纹理映射常见的2D纹理映射实际上是从纹理平⾯到三维物体表⾯的⼀个映射。

凹凸纹理映射前述各种纹理映射技术只能在光滑表⾯上描述各种事先定义的花纹图案,但不能表现由于表⾯的微观⼏何形状凹凸不平⽽呈现出来的粗糙质感,如布纹,植物和⽔果的表⽪等1978年Blinn提出了⼀种⽆需修改表⾯⼏何模型,即能模拟表⾯凹凸不平效果的有效⽅法⼀⼏何(凹凸)纹理映射(bump mapping)技术⼀个好的扰动⽅法应使得扰动后的法向量与表⾯的⼏何变换⽆关,不论表⾯如何运动或观察者从哪⼀⽅向观察表⾯,扰动后的表⾯法向量保持不变。

Blinn表⾯法⽮扰动法在表⾯任⼀点处沿其法向附加⼀微⼩增量,从⽽⽣成⼀张新的表⾯,计算新⽣成表⾯的法⽮量以取代原表⾯上相应点的法⽮量。

透明效果与混合光学原理:透射,折射,反射颜⾊调和法设a为透明体的不透明度,0≤a≤1,则I=αI a+(1−α)I ba=1,完全不透明a=0,完全透明alpha融合技术BlendingRGBA(a)不透明度a表⽰穿透该表⾯光线的数量a=1,完全不透明;a=0,完全透明gl.blendFunc(src_ factor,dst factor)混合后颜⾊=源颜⾊src_factor+⽬标颜⾊dst_factor源颜⾊:当前对象⽬标颜⾊:帧缓存像素透明与Z-Buffer消隐当对象A是透明的,即B透过A是部分可见时先画B再画A,可以处理先画A再画B,深度缓冲会从B取⼀个像素,同时注意到⼰经绘制了⼀个更近的像素(A),然后它的选择是不绘制BZ-Buffer消隐不能很好处理透明的物体,需要修正才⾏开启深度测试gl.enable(gl.DEPTH_TEST);绘制所有不透明物体(a=1.0)锁定深度缓冲区gl.depthMask(false);按从后向前次序绘制所有半透明物体释放深度缓冲区gl.depthMask(true);光线跟踪光线跟踪算法[WH1T80]是⽣成⾼度真实感图形的主要算法之⼀。

纹理映射原理

纹理映射原理

纹理映射是计算机图形学中一种常用的技术,用于将图像或纹理贴到三维模型的表面上,以使得模型具备更真实的外观。

纹理映射原理是通过将纹理图像上的颜色和纹理坐标与三维模型的表面相对应起来,从而实现贴图的效果。

纹理映射原理可以概括为以下几个步骤:1.创建纹理映射贴图:首先需要准备一张纹理图像,可以是一幅二维图像,也可以是一系列图像的集合。

纹理图像可以是真实拍摄的照片,也可以是由计算机生成的图案。

通常情况下,纹理图像需要进行预处理,以使得图像的颜色、亮度等方面更适合进行纹理映射。

2.为模型定义纹理坐标:每个顶点都需要关联一个纹理坐标,以确定纹理贴图上对应的颜色。

纹理坐标一般使用二维坐标表示,常用的表示方法是使用(u,v)坐标系。

3.将纹理坐标映射到模型表面:根据模型的顶点和三角形面片的顶点,将对应的纹理坐标映射到模型的表面上。

通过线性插值等算法,可以计算出每个像素上对应的纹理坐标。

4.纹理差值:根据纹理坐标的映射结果,在纹理图像中进行颜色插值。

常见的插值算法包括双线性插值和三线性插值,通过计算纹理坐标与其周围像素的相对位置和颜色值,可以获得像素的纹理颜色。

5.纹理映射:将插值计算得到的纹理颜色,应用到三维模型的表面上的对应像素上。

这一步会根据纹理坐标的映射结果,将纹理颜色与模型的表面颜色进行融合。

6.光照计算:完成纹理映射后,模型的表面会具备更真实的纹理外观。

此时,可以通过计算模型表面的光照来进一步提升模型的真实性。

除了上述基本原理外,还有一些高级的纹理映射技术可以应用在特殊场景中,例如投影纹理映射、环境贴图等。

投影纹理映射利用光源产生的投影,将纹理映射到模型表面上,可以实现根据模型的形状和光照变化改变纹理的效果。

环境贴图则是利用球形贴图将环境中的景象和光照信息贴到模型表面,可以实现纹理的光滑过渡以及虚拟场景的真实感。

总结起来,纹理映射原理是通过将纹理图像上的颜色与模型表面进行对应映射,实现将图像贴到三维模型上的效果。

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

GLboolean glIsTexture(GLuint textureName);
• •

void glBindTexture(GLenum target, GLuint textureName); void glDeleteTextures(GLsizei n, const GLuint *textureNames);
• GLubyte • •
my_texels[512][512][3];

定义纹理图像所用的像素图
扫描图像 由应用程序代码创建

激活纹理映射
• glEnable(GL_TEXTURE_2D); • OpenGL支持一至四维纹理映射
9
把图像定义为纹理
void glTexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);

本节只讨论从二维纹理到曲面的映射
4
基本策略
应用纹理需要下面三个步骤



• • •
• •
指定纹理
读入或生成图像 赋给纹理 激活纹理映射功能
由应用程序建立适当的映射函数 环绕(wrapping), 滤波(filtering)
5
给每个顶点赋纹理坐标 指定纹理参数
纹理映射
几何体
屏幕
图像
6
纹理示例

mipmapped 的线性滤波
23
指定纹理坐标

纹理坐标内部表示为四维向 量,可以用纹理变换矩阵进 行变换(缩放、旋转),得 到纹理与对象、照相机或光 源一起运动的效果 给多边形网格赋恰当的纹理 坐标并不容易

24
指定纹理坐标

指定平面a x + b y + c z + d w = 0
• 根据顶点(x,y,z,w)到平面的距离生成纹理坐标 • •
几何对象 纹理单元0 纹理单元1 纹理单元2
29
帧缓冲区
使用纹理


通常在片段着色器中通过采样器sampler来访 问纹理 采样器从纹理对象中返回纹理颜色值
in vec4 color; //color from rasterizer in vec2 texCoord; //texure coordinate from rasterizer uniform sampler2D texMap; //texture object from application out vec4 fColor; void main() { fColor = color * texture( texMap, texCoord ); }
glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
20
有无mipmap的对比
无mipmap
有mipmap
21
更多例子
GL_NEAREST
GL_LINEAR
22
示例
点采样
线性滤波
mipmapped 后的点取样
30
顶点着色器

通常顶点着色器输出纹理坐标到光栅化器 必须执行其他标准任务
• 计算顶点坐标 • 必要时计算顶点颜色
in vec4 vPosition; //vertex position in object coordinates in vec4 vColor; //vertex color from application in vec2 vTexCoord; //texture coordinate from application out vec4 color; //output color to be interpolated out vec2 texCoord; //output tex coordinate to be interpolated
GL_TEXTURE_2D );
19
GLubyte image0[64][64][3]; GLubyte image1[32][32][3]; … GLubyte image5[1][1][3]; glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 64, 64, GL_RGB, GL_UNSIGNED_BYTE, image0); … glTexImage2D(GL_TEXTURE_2D, 5, GL_RGB, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, image5);
(s,t),由于ax+by+cz+dw与该距离成比例,有 s = a s x + bs y + c s z + ds w t = a t x + bt y + c t z + dt w
25
指定纹理坐标


对象坐标系:纹理固定在对象上 视点坐标系:纹理图案随变换变化,感觉 像对象穿过纹理场

26
纹理对象
27
纹理对象

void glGenTextures(GLsizei n, GLuint *textureNames);
• • •
产生n个未使用的纹理对象名称 检查一个纹理名称是否被使用 创建或切换纹理对象,target为GL_TEXTURE_2D等 删除纹理对象 选择活动纹理单元, texture取值GL_TEXTUREi ,默认
10
映射纹理

基于参数纹理坐标:为每个顶点指定纹理坐标
纹理空间
对象空间
11
插值


OpenGL应用双线性插值从给定的纹理坐标中求 出适当的纹素 可以只应用纹理的一部分

方法是只应用纹理坐标的一部分,如最大纹理坐标为 (0.5,0.5)
12
变形


对于四边形,从纹理坐标到顶点的对应是比较 直接的 对于一般的多边形,程序员必须决定如何给顶 点赋纹理坐标
高级计算机图形学
中国科学技术大学计算机学院 黄章进 zhuang@
第三节
OpenGL纹理映射
2
基本内容

OpenGL中的纹理函数以及选项
3
OpenGL与纹理

OpenGL支持许多纹理映射选项
• 第一版包含了把一维或二维纹理映射到一维至 •
四维图形对象的函数 现在的版本提供了三维纹理,但需要高端硬件 的支持
target, type, mode )
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
纹理(下方)是 256 256 的 图像,它被映射到一个矩形 上,经透视投影后的结果显 示在上方
7
纹理映射与OpenGL流水线

图像与几何分别经过不同的流水线,在片 段处理时合二为一
• “复杂的”纹理并不影响几何的复杂性
几何流水线 片段处理器
顶点
图像
像素流水线
8
指定纹理图像

利用CPU内存中的纹素数组定义纹理图像
t
s
GL_REPEAT
GL_CLAMP
15
纹理的放大和缩小

放大:多个像素对应一个纹素 缩小:多个纹素对应一个像素
纹理 放大
多边形
纹理 缩小
多边形
16
解决方法

点采样:最近纹素的纹理值 线性滤波:最近点邻域(2 x 2)纹素加权平均 的纹理值
17
滤波模式
滤波模式的指定
•glTexParameteri(

可能会出现变形
13
纹理参数

OpenGL中有许多参数来确定纹理的应用 方式
• Wrapping参数确定当s, t的值超出[0,1]区间后



的处理方法 Filter模式允许用区域平均方法来代替点采样方 法 Mimmapping技术使得能以不同的分辨率应用 纹理 环境参数确定纹理映射与明暗处理的交互作用

OpenGL提供了纹理对象功能
• 纹理对象存储纹理数组和各种纹理参数 • 纹理内存可以保存多个纹理对象 • GLuint mytex; • glGenTextures(1,&mytex); • glActiveTexture(GL_TEXTURE0); • glBindTexture(GL_TEXTURE_2D, mytex); • glTexImage2D(GL_TEXTURE_2D,……); • glTexParameteri( GL_TEXTURE_2D, ……);
14
Wrapping模式

钳位(截断):若s,t>1就取1,若s,t<0就取0 重复:应用s,t模1的值
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_T O_EDGE) glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT)
• • • • • • • •
target:纹理的类型,如GL_TEXTURE_2D level:用于mipmapping,0表示单分辨率纹理图像 internalFormat:纹素的分量格式,GL_RGB,GL_RGBA等 width和height: pixels的宽度和高度 border:必须为0 format:图像数据pixels的格式, GL_RGB,GL_RGBA等 type:pixels分量的数据类型, GL_BYTE, GL_INT等 pixels:指向纹素数组的指针
相关文档
最新文档