10.OpenGL 纹理知识与API学习记录

一、什么是纹理

    纹理,英文是texture,中文可以翻译成纹理、纹理图、纹理映射等等一堆东西。不过不管翻译成啥,讲的都是一个东西。我们通常说的纹理,指的是一张二维的图片,把它像贴纸一样贴在什么东西上面,让那个东西看起来像我们贴纸所要表现的东西那样。举例来说,假如我们想绘制一面砖墙,我们该怎么办?根据我们已经掌握的知识来看,我们需要用成千上万的点来模拟它的颜色,我的天,这要搞到猴年马月才能搞出来?显然不现实!于是聪明的程序员们想出了一个好方法,就是用一张图“贴”到物体的表面上,让它看起来像是一面砖墙的样子,省时省力省心。

用一句话来总结,纹理就是一张贴到物体上的2维图像。

二、 纹理映射


纹理映射

规则是:以左下角为原点,向右伸展到1.0的位置,向上伸展到1.0的位置,表示一整张的纹理图像,具体我们是怎么映射到顶点数据的是需要我们在顶点数据上加一个映射关系.

三、 纹理参数

1.设置过滤方式

    我们在日常开发中经常碰到这样一种情况,加入设计师给我们的图片是40x40的,但是我们需要渲染的View是100x100的,很明显这个view需要一张更大的纹理图,那么这种情况下是怎么读取的文理呢?OpenGL给我们提供了两种方式

GL_NEAREST

最近点过滤。指的是纹理坐标最靠近哪个纹素,就用哪个纹素。这是OpenGL默认的过滤方式,速度最快,但是效果最差。

GL_LINEAR

(双)线性过滤。指的是纹理坐标位置附近的几个纹素值进行某种插值计算之后的结果(其实就是颜色混合计算)。这是应用最广泛的一种方式,效果一般,速度较快。

两种过滤方式我们可以根据下图做一下比较

第一张是采用GL_NEAREST, 第二张为GL_LINEAR,通过比较我们还是可以很明显的区分出过滤方式的

1.设置环绕方式

通常,纹理坐标的范围在(0,0)到(1,1)之间,但是如果我们制定的坐标在这之外呢?OpenGL会如何做出反应?默认情况下,OpenGL会重复绘制纹理图,不过,OpenGL也提供了更多的选择方案:

GL_REPEAT: 默认方案,重复纹理图片。

GL_MIRRORED_REPEAT:类似于默认方案,不过每次重复的时候进行镜像重复。

GL_CLAMP_TP_EDGE:将坐标限制在0到1之间。超出的坐标会重复绘制边缘的像素,变成一种扩展边缘的图案。(通常很难看)

GL_CLAMP_TO_BORDER:超出的坐标将会被绘制成用户指定的边界颜色。

每种方案的显示效果截然不同,不必担心你会搞混了,看看效果就知道了。


四种纹理环绕方式对比

四、使用

纹理加载步骤我们可以总结为以下几点

1.读取文理  对应代码以及参数解释

读取文件函数

   这些参数均为我们 定义的变量,把变量地址给到读取函数,函数会吧读取到的结果返回到变量里.

参数1:x,矩形左下角的窗⼝坐标

参数2:y,矩形左下角的窗口坐标

参数3:width,矩形的宽,以像素为单位 

参数4:height,矩形的高,以像素为单位

参数5:format,OpenGL 的像素格式,

参数6:type,解释参数pixels指向的数据,告诉OpenGL 使⽤用缓存区中的什么 数据类型来存储颜⾊色分量,像素数据的数据类型,

参数7:pixels,指向图形数据的指针

void glReadPixels(GLint x,GLint y,GLSizei width,GLSizei

height, GLenum format, GLenum type,const void * pixels);

glReadBuffer(mode);—> 指定读取的缓存 glWriteBuffer(mode);—> 指定写⼊入的缓存

这一步就是从图片里获取到了文理数据和对应的参数

2.分配文理对象

纹理对象分配

例如:GLuint textID;

void glGenTextures(1,&textID);

3.绑定纹理


绑定纹理

4.载入纹理


载入纹理函数

target:GL_TEXTURE_2D

* Level:指定所加载的mip贴图层次。一般我们都把这个参数设置为0。//这个参数后面会学习到

* internalformat:每个纹理单元中存储多少颜色成分。

* width、height、depth参数:指加载纹理的宽度、⾼度、深度。==注意!==这些值必须是 2的整数次⽅方。(这是因为OpenGL 旧版本上的遗留留下的⼀一个要求。当然现在已经可以⽀支持不不是 2的整数次方。但是开发者们还是习惯使用以2的整数次⽅去设置这些参数。)

* border参数:允许为纹理贴图指定⼀个边界宽度。一般为0

* format、type、data参数 均为我们加载文理时获取到的值 其中data 为 函数返回值,表示文理数据

5.纹理参数设置


文理参数设置

最后 因为OpenGL是状态机模式,所以我们需要用完以后清除这些纹理对象


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 前言 OpenGL的纹理实际上运用十分广泛,是OpenGL中的重点。如果你有看过Android底层的绘制原理,能够...
    yjy239阅读 3,754评论 5 7
  • 通常来讲,计算机图形学的目标是计算一张图片上的每个组成部分的颜色,虽然我们可以通过着色器中的算法来计算像素的颜色,...
    Henry_Jeannie阅读 584评论 0 1
  • 一、纹理综述 物理世界中,视域内的颜色会发生快速的变化。你可以看到很多物体表面都会呈现出丰富的颜色,并且在狭小的面...
    凡几多阅读 1,020评论 1 5
  • 本文首发于个人博客:Lam's Blog - 【OpenGL-ES】二维纹理,文章由MarkDown语法编写,可能...
    格子林ll阅读 3,729评论 0 9
  • 喜欢看你忍着 内心的潮湿与变态 在我面前阳光地谋划将来 ——《潮变》 ​​​​
    段童阅读 134评论 0 0