专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

一看就懂的OpenGLES教程图形渲染管线的那些事

  前言
  视频数据光解码出来,那也只不过是一堆冰冷的二进制数据罢了,只有将数据渲染到屏幕上,才能真正让人感受诗与远方,体验看片的快乐
  Android平台最常用的渲染工具就是大名鼎鼎的OpenGL,行内人士基本多少有听闻过它的大名,众多有名的游戏引擎就是由OpenGL编写的。学习目标
  学习目标就是掌握OpenGL的工作机制,可以通过OpenGL绘制基本图形以及渲染图片,最终能够做出像我的项目UnitedPlayer一样的视频动态滤镜效果:反色:
  2。灰度图:
  3。。闪白:
  4。。缩放:
  5。灵魂出窍:
  6。颜色偏移抖动:
  看起来还有点炫把哈哈,其实只要掌握了OpenGL基础,就会发现也不是难事
  当然OpenGL也不是学习的终极目标,毕竟它只是一个工具,以后还是会被其他更优秀的工具取代,我们需要学习的是图形学知识,这才是OpenGL的内核,才是真正贯穿整个图形开发始终的秘密武器,所以在本系列中,也会插入一些图形学基础知识在其中。
  C学习资料免费获取方法:关注音视频开发T哥,链接即可免费获取2023年最新C音视频开发进阶独家学习资料!OpenGLOpenGL是什么
  上面说了那么多,那么OpenGL到底是什么呢?很多人误以为OpenGL是一个图形渲染库,然而,OpenGL本身并不是一个API库,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。
  以下为著名OpenGL学习网站learnopengl对OpenGL的介绍:
  OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。
  既然是规范,那就一定有官方的规范文档,这是官方规范文档,是权威的文档,是对OpenGL的各种概念和整个工作机制的详细论述,也可以当做API文档使用。
  规范文档中对OpenGL的定义是:
  OpenGL(forOpenGraphicsLibrary)isasoftwareinterfacetographicshardware。Theinterfaceconsistsofasetofseveralhundredproceduresandfunctionsthatallowaprogrammertospecifytheobjectsandoperationsinvolvedinproducinghighqualitygraphicalimages,specificallycolorimagesofthreedimensionalobjects。
  Totheprogrammer,OpenGLisasetofcommandsthatallowthespecificationofgeometricobjectsintwoorthreedimensions,togetherwithcommandsthatcontrolhowtheseobjectsarerenderedintotheframebuffer。
  Totheimplementor,OpenGLisasetofcommandsthataffecttheoperationofgraphicshardware。
  以上属于官话,用通俗的话来讲就是:OpenGL就是一个建立在图形硬件(一般就是gpu)之上的软件编程接口,这些接口有一套官方制定的规范,具体实现由制造商(一般是显卡制造商)去实现,而编程者通过这些软件编程接口,就可以在计算机中绘制出2D以及3D的图形。
  不同制造商的实现有所差异,比如同一个api:glDrawArrays,规范制定这是一个绘制图形的api,硬件制造商就必须实现其为绘制图形api,不允许将其实现为清屏api,不然那就是违反规范,不讲武德。
  其实这样的规范类似我们以前接触过得Java虚拟机规范,通过规范额约束,在各种硬件制造商中统一了标准,也对编程者隔离了具体硬件实现,使得编程者只需要学习一套开发的api。常见的学习困难
  说起学习OpenGL,可能是很多初学者的梦魇,入门各种困难层出不穷,画一个最基本的三角形就能把人折腾得够呛,这里我也将曾经学习碰到的坎梳理一下,相信很多人学习过程中也曾碰过这些坎:OpenGL学习资料太少,网上的资料零碎不成系统,让人很难理解OpenGL的工作机制。(learnopengl可以说是网上最好的学习网站了,讲得非常详细和系统,不过我个人觉得它其实对于初学者来说还是不够友好,讲得比较抽象不够通俗易懂。)
  OpenGL的api设计比较反人类,特别是对于像写惯了Java的开发者来说,OpenGL的api真的是太难用了,很啰嗦,各种绑定和解绑能把人搞晕。
  OpenGL的api经常不理解是什么意思,在网上也查不到api的解释。
  OpenGL的着色器怎么工作的不好理解,而且不能调试,光是解决编译问题就够呛。
  在这个系列我也努力解决这些学习痛点,让初学者可以比较柔顺丝滑地入门,而即使是老司机也能在这里有所收获,所有解惑。
  C学习资料免费获取方法:关注音视频开发T哥,链接即可免费获取2023年最新C音视频开发进阶独家学习资料!
  OpenGL工作机制
  学习OpenGL首当其冲的就是要清楚它的工作机制,它不像平时做Android应用开发那样,只要几个api理解就差不多可以做一个功能开发了,OpenGL需要的是大局观,我们要像一位将军一样,在战役中统揽大局,把整个处理流程搞清楚,才能指定好战略,才能拿下OpenGL,而这里的大局,指的就是OpenGL的图形渲染管线。
  上一章说的学习困难中提到的很难理解OpenGL的Api和着色器,很大程度就是对图形渲染管线缺乏清晰的理解。即使有些人可以通过模仿套用模板代码可以实现一个功能,但是对工作机制理解的不足依旧无法让他真正学会OpenGL,更不要说游刃有余地掌握它。
  只有掌握了工作机制,才能理解它Api,才能真正掌握OpenGl。图形渲染管线
  想象以下,现在如果需要你在屏幕上绘制一个三角形,你会怎么做呢?
  第一步需要什么呢?当然是确定三角形三个顶点的位置,于是你操作者鼠标在三个地方先画了三个点,然后自己量了一下,位置角度完美,自己不由自主点了点头,三个顶点如下图所示:
  第二步,那当然是将三个点用线段连起来了,于是你拿起鼠标,很快将三个点刷刷连起来:
  第三步,你觉得这样的三角形太过于单调,于是准备给三角形上色,因为是在屏幕上的,而屏幕本质是一个个像素显示颜色的,所以上色之前要先确定好哪些像素是属于三角形的,于是你叫计算机把属于三角形内部的像素一个个圈出来:
  第四步,你想画一个比较炫的三角形,所以想给每个像素都上不同的颜色,于是你给一个个像素精心上色:
  于是一个很漂亮的三角形就呈现在眼前了!
  你回想画三角形的几个步骤,发现整个过程和车间流水线有一点相似之处。
  和车间的生产流水线类似,OpenGL中也存在这样一条流水线在默默地工作,每一个岗位都在默默勤劳地工作,当然,OpenGL要画一个图形,需要的步骤肯定是要比上面你画三角形复杂很多,毕竟人家可是要画各种非常复杂的3D场景的。
  以下为OpenGL的图形渲染管线,图来自learnOpenGL
  一言以蔽之,OpenGL图形渲染管线,就是将输入的3D的坐标,转化为显示在屏幕上的2D的像素的一个处理流程。
  整个渲染管线的每个工序依次是:
  顶点着色器图元装配几何着色器光栅化片段着色器测试与混合
  每个工序的输出都可以作为向下一个工序的输入,那么接下来,就来详细说明这几个步骤:
  首先不得不提到的一个很重要的东西叫做着色器(shader)。
  早期的OpenGL使用立即渲染模式(Immediatemode,也就是固定渲染管线),固定渲染管线就是只可配置(configurable)的管线。这个模式下绘制图形很方便。OpenGL的大多数功能都被库隐藏起来,开发者很少有控制OpenGL如何进行计算的自由。而开发者迫切希望能有更多的灵活性。随着时间推移,规范越来越灵活,开发者对绘图细节有了更多的掌控,现代OpenGL转变为可编程渲染管线,把很多部分从可配置改为可编程(programmable)。着色器
  首先不得不提的就是着色器,着色器就是一段运行在GPU中的程序,这段程序由开发者编写,所以说为开发者提供了很大的灵活度和可掌控度。现在OpenGL主要有三种着色器,分别为顶点着色器、几何着色器、片段着色器,其中顶点着色器和片段着色器为开发者必须提供,几何着色器为可选提供。1。顶点着色器(VertexShader):
  第一个阶段是顶点着色器,主要用于确定绘制图形的形状,以及接收开发者传入的数据并传给后面阶段。接收外部传入的顶点数据,根据需要对顶点数据进行变换处理之后,再将顶点数据传入下一个阶段图元装配。另外也接收外部传进来的颜色值以及纹理采样器,然后再传递给下一个阶段图元装配处理。
  每个顶点着色器只接收处理一个顶点坐标,有多少个顶点就会执行多少次。关于顶点着色器,后面博文还会重点细讲。2。图元装配:
  接下来的阶段是图元装配,接收顶点着色器的输出数据,将顶点着色器传来的顶点数据组装为图元,就如上面画三角形中所说的将三角形三个顶点连接起来,具体连接方式需要开发者指定。所谓图元,指的就是点、线、三角形等最基本的几何图形,再复杂的图形也离不开这些基本图形的组成。另外,图元装配阶段还会将超出屏幕的顶点坐标进行裁剪,裁剪之后,顶点坐标被转化为屏幕坐标,之后将图元数据传递给管线的下一个阶段光栅化(几何着色器为非必须阶段,这里入门就暂时不讲了)
  3。光栅化:
  接下来的阶段是光栅化,拿到图元装配传递过来的图元数据,光栅化要做的就是将一个图元转化为一张二维的图片,而这张图片由若干个片段(fragment)组成(可以当做将这张图拆解为一个个类似屏幕上像素的小片段),片段可以近似看成像素,但是又略有不同,一个片段包含渲染该片段所需要的位置、颜色和深度的全部信息。
  光栅化完成之后,就把每个片段传给片段着色器:
  4。片段着色器
  接下来的阶段是片段着色器,这是另外一个必须有的重要着色器,也是最后一个可以通过编程来控制屏幕是上显示颜色的阶段(后面的混合测试阶段还可以改变片段的颜色),在这个阶段主要是计算是片段的颜色。这里每个片段着色器接收一个片段数据的输入,所以有几个片段就会执行所少次,根据具体需要灵活设置该片段的颜色。然后片段数据就被传递到下一个阶段测试与混合
  5。测试和混合
  接下来的阶段是测试和混合,这个阶段的测试是专门用来丢弃一些不需要显示的片段的,其中测试主要包含深度测试和模板测试。
  1。深度测试是在显示3D图形的时候,根据片段的深度来防止被阻挡的面渲染到其它面的前面。这里是OpenGL内部维护一个深度缓冲,保存这一帧中深度最小的片段的深度,然后对屏幕同一个位置的其他片段的深度再进行比较,深度比缓冲中大的片段则丢弃,直到找到深度最小的片段,就将其显示出来。
  如图所示(图来自:GAMES101现代计算机图形学入门闫令琪):
  图中每个方格表示一个片段,片段上的数值表示当前片段的深度,R则表示深度无限,加号表示2个图形叠加一起,则由下面部分的图可知,当2个图形叠加在一起的时候,同一个位置的片段总是显示深度较小的那一个。
  2。模板缓冲区是用于控制屏幕需要显示的内容,屏幕大小决定了模板缓冲区大小;模板测试基于模板缓冲区,从而让我们完成想要的效果。模板测试类似于与运算:
  图来自模板测试
  上图可以看出,模板就是每个片段位置有0也有1,然后和缓冲中的图像数据对应片段进行类似与运算,也类似与拿一个遮罩罩住,只留下1的对应片段显示出来。
  3。混合则是带有透明度的片段,在这个阶段会与显示在它背后的片段的颜色按照透明度进行叠加行成新的颜色,通俗讲就是形成透明物体的效果。
  图来自混合
  由图可以看出,通过混合,右边的窗户既有部分自己的颜色,又有窗户里面物体的部分颜色,就是两者透明度按照比例叠加的结果。
  于是走完整个渲染管线流程,就会看到在屏幕中渲染出3D世界的图像了。
  让我们再回顾下这条流水线做了什么:
  首先我们传入了图形的顶点数据,然后OpenGL内部会经过变换投影将3D顶点坐标映射为2D的屏幕坐标,然后自动将顶点连成图形,然后再将图形内的区域切成一个个小片段,然后给每个小片段自由上色,最后把被挡住的或者我们不想显示的区域的下片段丢弃,并且对有透明度的片段进行前后片段颜色的混合。
  图形渲染管线学习的意义
  为什么理解这条渲染管线很重要呢?因为如果没有理解好这条渲染管线,后面学习着色器的时候,会遇到很多不理解的东西,比如数据是怎么从顶点着色器传递到片段着色器的,或者可能着色器代码都能看懂,就是完全不知道这样写能做什么。所以着色器的程序不能单独来看,一定要放在整个渲染管线里面来看,就会有拨云见日的感觉。总结
  本文主要介绍了OpenGL是什么的概念,并主要针对图形渲染管线的每个步骤进行比较详细的阐述。介于篇幅关系,太长的篇幅容易导致读者不易消化理解,也容易看困,本篇博文就先写到这,工作机制流程还有下半场,下一篇文章:一看就懂的OpenGLES教程再谈OpenGL工作机制敬请关注代码地址
  (项目代码将不断更新)github。comyishuinanfe参考
  《OpenGL规范文档》learnopengl《OpenGL超级宝典第五版》《OpenGL编程指南第8八版》
  作者:半岛铁盒里的猫链接:https:juejin。cnpost7119135465302654984来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  在开发的路上你不是一个人,欢迎加入C音视频开发交流群大家庭链接讨论交流!

他生前加入中统,受降日军,臭名远扬,死后真实身份曝光行刑前,还能笑得这么灿烂,太不可思议了!1949年5月11日,朱大同被国民党以汉奸罪枪杀于上海闸北宋公园,他的笑容吸引了在场美国记者的注意,留下了这珍贵的一幕。朱大同01臭名远播朱日军老兵回忆曾经捉过共军女特工,她太漂亮了看一眼就自惭形秽一个漂亮女人来到日军据点寻求帮助,据点队长千田黛感到纳闷,这女子哪来的勇气,我来会会她。当女子徐徐走来,千田黛被眼前女子的美貌迷住了,竟然不自觉整了了一下衣裳,一番交谈下来,千田黛八路军敌工部潜入炮楼,露出马脚,伪军发现后递眼色,结果如何?导读敌工部赵勇化装成老百姓,来到了安庄炮楼。他见到伪军在打牌,就大大咧咧地坐下来跟他们玩了起来。伪军们发现他藏有手枪,相继对他递眼色。大家明白此人是八路军,却无人敢声张。事件一赵勇九十年前,日军侵华时,中国是怎样错综复杂的局面(浅说)1931年,日本策动了著名的九一八事变,向中国东北的驻军发起了大规模进攻。日军在短短几个月内侵占了整个东北三省。随后,日本又在1932年1月在上海挑起事端。1932年的1月28日,对杨靖宇割头的日军,结局如何?毒杀自己妻儿后剖腹,侄女谢罪作者雷神声明兵说原创,抄袭必究提起河南,有一个地方叫驻马店。如今,外界对这个地方有些误解,其实这里自古是英雄之地,东北抗联杨靖宇将军就出生在驻马店的确山县。1929年,24岁的杨靖李春江压不住了!区俊炫不满球队定位,曝上海男篮更衣室内讧头条创作挑战赛CBA全明星赛马上就要开打,全明星周末结束后联赛第二阶段即将开打。休赛期不少球队都完成了外援方面的补强,其中以上海男篮动作最大,他们连续签下了NBA球星布莱德索和大外感谢苹果!iOS16。2b优化太顶,续航大幅回升,室内信号真强今天凌晨苹果正式发布了iOS16。2b系统更新,这也是苹果发布的第二个快速安全响应更新,熟悉苹果的朋友都知道苹果很低调,虽然只提及了安全更新,但不少老果粉还是发现了新系统的变化,玩从长治到新疆(自驾)十八天,第二天宁夏中卫甘肃张掖行程安排行程1从长治到新疆(自驾)十八天,第二天宁夏中卫甘肃张掖出发时间20169旅行周期1630天人均费用500010000畅游新疆,饱览祖国大好河山古尔邦节,又称宰牲节,尔德节甘肃张掖祁连山下奏响新时代双拥欢歌中国工农红军西路军留下的红色血脉始终绵延。近年来,地处河西走廊中段祁连山脉北麓的甘肃省张掖市坚持大双拥一盘棋理念,着眼新时代拥军优属新任务,以爱军队懂军人善拥军为价值导向,不断健全组图丨甘肃张掖甘州沙漠之舟驮出乡村振兴路牧民们正在给骆驼添加草料(央广网发王将摄)央广网兰州11月26日消息(见习记者李红军通讯员王将戴珊)初冬时节,位于甘肃省张掖市甘州区平山湖蒙古族乡的千峰骆驼产业基地,工作人员正在打郭敬明终于付出了代价前言郭敬明20岁时,凭借着小说梦里花落知多少站上了巅峰后,立即就陷入抄袭风波,在文坛圈赚够了钱之后,他开始转型成为导演。2013年,成为导演后的郭敬明再次迎来了巅峰,但命运却是惊人
美持续升级芯片禁令,外媒相当于在自残芯片规则不断修改,但是没有任何一个受益者。因为芯片规则的作用是相互的,美并没有意识到,自己在持续升级芯片禁令的同时,越来越多的美企被无端牵涉到其中。过去美企靠芯片销售赚取巨大的收益保险中介政策主旋律高质量发展暨中国保险家发布2023年保险中介20强来源经理人传媒旗下中国保险家杂志据不完全统计,2021年以来,各地银保监局已陆续注销超2800家保险中介机构的经营保险代理业务许可证,仅2022年以来就有1307家保险中介机构被注财经下午茶央行房地产贷款增速回落,开发贷款增速提升沪指缩量跌0。68收盘综评A股2月3日,A股三大指数弱势震荡,午后跌幅收窄,截至收盘,上证指数跌0。68,深证成指跌0。63,创业板指跌0。85。盘面上,ChatGPTAIGC概念大涨,消费电子概念广东经济第一区,数读8街道公布高质量发展施工图广东经济第一区开年就公布了利好消息!深圳市南山区2022年实现地区生产总值(GDP)破8000亿大关!五年跨四个千亿级台阶,南山好劲!近期包括粤海街道办在内的南山区8个街道办,陆续百强透视金力永磁业绩爆表,永磁材料发展正当时2023年开年,二级市场稀土概念股涨势活跃,在农历新年后的多个交易日出现上涨。板块个股中,金力永磁(300748。SZ)(06680。HK)中国稀土(000831。SZ)创兴资源(沿滩铆足干劲忙生产奋力冲刺开门红自贡网记者卜一珊芶思2月3日,记者在位于沿滩高新技术产业园区内的凯盛(自贡)新能源有限公司看到,光伏玻璃全自动设备火力全开,工人们各司其职,专注忙活着手中的工作,一派火热的生产场景收益最高回撤最小公募基金(5年期)图1红绿鱼最牛公募基金排名(5年期,统计到20221231)基金排名是个技术活,收益率(或持有一年两年三年收益率超额收益率)最大回撤率(或最大回撤率相关指数最大回撤率)卡玛比夏普比钨行业研究报告战略金属之王,从工业的ampampquot牙齿ampampquot到高端制造的ampampquot脊梁ampampquot(报告出品方民生证券)1钨资源大国,战略地位特殊我国的钨资源丰富,钨储量及矿山钨产量世界第一,2021年占比分别为51和83。2021年全球钨资源储量约467万吨,中国钨资源储量为中航电测复牌1158万手封涨停!军工权重龙头即将诞生国企改革大年下一个是谁?今日复牌的中航电测(300114)开盘即一字20cm涨停,截至收盘,该股报12。7元,涨停板上封单超1000万手。值得一提的是,集合竞价结束之后,中航电测封单高达1158万手,即超美联储加息放缓人民币对美元即期汇率一度升值逼至6。70广州日报讯(全媒体记者林晓丽王楚涵)随着美联储继续放缓加息幅度至25个基点,在美元走弱的影响下,在岸和离岸人民币对美元汇率当日盘中纷纷收复6。71关口。2月2日,中国外汇交易中心的昔日互金巨头陆金所闯关港股,4年估值缩水2175亿元作者付影来源独角金融又一家金融科技中概股迈出赴港上市的步伐。2月1日,作为中国平安(601318。SH)孵化多年的金融科技企业,陆金所控股有限公司(下称陆金所)向港交所递交招股书,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网