在纹理贴图技术问世之前,虚拟3维世界只能通过几何模型去模拟现实,可想而知,现实世界的错综复杂,计算量之大并不能满足实时显示的需求。纹理映射带来了革命性的变换,简单的使得虚拟的3维世界得以无限接近于现实。纹理映射技术最早是由Catmull 在1947年率先提出的,Catmull首先找到了以(u,v)表示的双变量实数空间(纹理空间)和以参数(s,t)表示的三维曲面之间的对应关系(映射关系)。
纹理由纹素组成,通常包括颜色值。但是在实际应用中,很多时候把纹理看作可以再着色器中查询的表(一个存储数据的地方),你可以用于任何目的,不仅仅局限于纹理贴图。
基本纹理类型:
OpenGL支持多类型的维数和布局可变的纹理对象,每个纹理对象表示组成完整纹理的一组图像,可以是1维,2维,3维数组。纹理可以使用用于2维和2维数组纹理的多重采样的纹理类型来表示多重采样颜色。多重采样是一个用于抗锯齿的术语,其中每个纹素被赋予多个独立的颜色,然后在渲染过程中合并这些颜色来生成最终的颜色。
纹理通过纹理单元绑定到OpenGL中,纹理单元命名为GL_TEXTURE0到GL_TEXTUREi(i是OpenGL实现所支持的最大纹理数目减一)的绑定点。只要一个纹理绑定到环境中,则在着色器中可以使用采样器来访问,而采样器变量用匹配纹理的维数来声明,具体看下表:
目标GL_TEXTURE*
|
采样器类型 |
维度
|
1D
|
sampler1D
|
1D
|
1D_ARRAY
|
sampler1DArray
|
1D数组
|
2D
|
sampler2D
|
2D
|
2D_ARRAY
|
sampler2DArray
|
2D数组
|
2D_MULTISAMPLE
|
sampler2DMS
|
2D多重采样
|
2D_MULTISAMPLE_ARRAY
|
sampler2DMSArray
|
2D多重采样数组
|
3D
|
sampler3D
|
3D
|
CUBE
|
samplerCube
|
立方体纹理映射
|
ARRAY
|
samplerCubeArray
|
立方体映 |