OpenGL基础(二) 渲染流程图解析

前言

        最近在学习视图渲染的东西,就从OpenGL入门了,因之前对渲染知识了解的不多,咱还是果断从最基础的搞起。零基础的推荐大家看《OpenGL超级宝典》--蓝宝书。讲的非常细致,容易理解。学习过程我会记录一些心得体会和总结,也希望这些能够帮助到正在入坑的童鞋。

一、OpenGL的渲染流程

        OpenGL中的渲染是按照设计好的流程进行的。从最原始的顶点数据到显示出最终的效果需要按照一定的顺序来进行。那么接下来我们就来了解一下GPU拿到顶点数据后是如何处理的,如下图所示:

OpenGL渲染流程

1、顶点着色器(必要):对顶点数据进行变换(平移、旋转、投影)、光照等逐个计算。

2、细分着色器(可选):描述物体形状,在管线中生成新的几何体处理模型。

3、几何着色器(可选):对顶点数据进行加工,通过高效的几何运算,将数据输出到片段着色器。

4、图元设置:即将顶点根据primitive(原始的连接关系)还原成网格结构。网格由顶点和索引组成,在之前流水线中是对顶点的处理,在这个阶段是根据索引将顶点连接在一起,组成线、面单元。

5、剪切:剪切视口之外的视图,没有超出边界则不需要剪切。

6、光栅化:计算并确定图元所覆盖的区域像素片元。

7、片元着色器(必要):对每个像素点颜色计算和填充。

8、将处理好的frameBuffer 放到帧缓冲区,有视频控制器将数据显示到屏幕上。

二、OpenGL 渲染架构

        OpenGL渲染需要按照流程办事,那么开发者是如何介入到这个流程中的,在那个环节介入呢?

OpenGL渲染架构图

1、客户端、服务端

        在这个图中,管线分为两部分,上半部分为客户端,下半部分为服务端。就 OpenGL 而言,客户端是存储在 CPU 存储器中的,驱动程序将渲染命令与数据组合起来发给服务器执行。驱动程序会将渲染命令和数组组合起来,发送给服务器执行!在一台典型的个人计算机上,服务器就是实际上就是图形加速卡上的硬件和内存

        服务器客户机在功能上也是异步的。 它们是各自独立的软件块或硬件块。我们是希望它们2个端都尽量在不停的工作。客户端不断的把数据块和命令块组合在一起输送到缓冲区,然后缓冲区就会发送到服务器执行。

2、attributes属性、uniform值、纹理、输出

        Attributes 属性(只能传递到顶点着色器,不能传递到片元着色器):一个顶点要做改变的数据元素。属性可以是浮点数,整数、布尔数据。比如:颜色数据、顶点数据、纹理坐标、光照法线等。

        Uniform值(可以直接传递到顶点着色器/片元着色器):通过设置 Uniform 变量就紧接着发送一个图元批次处理命令。Uniform 变量实际上可以无限次的使⽤。 设置一个应用于整个表⾯面的单个颜色值,还可也是一个时间值。如果是每个顶点需要发生的旋转等变换,可以使用uniform传递到顶点着色器;如果是需要对视频的图片进行颜色空间转换:YUV-->RGB,会使用uniform传递到片元着色器。

        纹理数据(可以直接传递到顶点着色器/片元着色器):典型的应用场景:片段着色器对一个纹理值进行采样,然后在一个三角形表面应用渲染纹理数据。纹理数据,不仅仅表现在图形,很多图形文件格式都是以无符号字节(每个颜色通道8位)形式对颜色分量进行存储的。

        输出:在图表中第四种数据类型是输出(out);输出数据是作为一个阶段着色器的输出定义的,而后续阶段的着色器则作为输入定义。输出数据可以简单的从一个阶段传递到下一个阶段,也可以用不同的方式插入。客户端的代码接触不到这些内部变量我们的OpenGL开发暂时接触不到。

参考资料:

1、OpenGL 4.0的Tessellation Shader(细分曲面着色器)

2、几何着色器

3、从整体上解读OpenGL的渲染流程


OpenGL渲染流程详解OpenGL渲染流程详解

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