OpenGL ES 2 0 Textures(纹理)

189 阅读1分钟

?什么是纹理?
--> 就是一张 2D 位图图片,图片可以只是单纯的颜色,也可以是复杂的图形图像。 注:比较普遍是的 2D 纹理,当然也有 1D 、3D(多个 2D 纹理) 纹理;文章只讨论 2D 的纹理。

如:

? 纹理既然是一张图片,那么对图片的大小有什么要求 ?
--> 根据不同的设备,所要求的图片大小不一样,但是越小越好(小:在不影响显示效果的前提下,尽量小,因为移动设备的空间是有限的)

?纹理的坐标系?

--> 因为是 2D 图像而且 OpenGL ES 坐标是 [0, 1],所以如图所示。 --> 纵坐标是 T --> 横坐标是 S --> 纹理单位(texel) = 64w/h;(一个单位纹理像素等于 1 个单位高度(tall) * 64 个单位的宽度(wide))


绘制的三角形坐标是:

注:这个三角形也称为 可视窗口;
纹理填充于几何结构中
?使用纹理,但是直接坐标对应地放置纹理进屏幕绘制的图形么 ?
--> No !
--> 纹理的坐标系与屏幕中的几何图形的坐标系,需要进行一个转换过程,而这个过程就是 栅格化 。
--?->什么是栅格化?就是 (x, y, z)坐标系的几何图形数据 转换成
颜色像素(屏幕是由像素组成的坐标系统) 的过程;转换后的每个颜色像素称这片段。(The rendering step that converts geometric shape data into colored pixels in the frame buffer is called rasterizing, and each colored pixel is called a fragment.) --> GPU 会智能地判断什么时候需要使用纹理再实时地进行转换;
看图:
就是数学中的映射关系
--> YUV, Y--亮度;UV--色彩