位置: 编程技术 - 正文

OpenGL渲染流水线(opengl 渲染yuv)

编辑:rootadmin

推荐整理分享OpenGL渲染流水线(opengl 渲染yuv),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl渲染管线流程,opengl 渲染yuv,opengl管线渲染,opengl渲染管线流程,opengl管线渲染,opengl渲染管线流程,opengl渲染管线流程,opengl渲染流程图,内容如对您有帮助,希望把文章链接给更多的朋友!

OpenGL实现了通常所说的渲染流水线。这个流水线分为一系列不同的阶段,能够将应用程序提供给OpenGL的数据转化为一幅最终的渲染图。下面的图为OpenGL4.3的流水线,这个流水线从发布至今已经进化了非常多。

OpenGL在最初将我们提供的图形数据(顶点和图元)传入到一系列的shader 阶段:vertex shading,tesselation shading,然后是geometry shading,这些都在栅&#;化之前做完。rasterizer会将在裁剪区域的所有图元生成fragments,然后对每一个生成的fragment执行fragment shader。

就如你所看到的,shaders在创建OpenGL应用程序中扮演了一个非常重要的角色。 你有权利去决定去使用哪个shader 阶段,在每个阶段中做哪些事情。并不是每一个阶段都是必须;实际上,只有vertex shaders和fragment shaders才是一定要用到的。Tessellation 和 geometry shaders只是可选项。

现在,我们对每一个阶段都做一下更加深入地了解,这样你对整体就有更好的拿捏。我知道这些东西对你来说可能有点无法理解,但现在最好是硬着头皮看一下。你最后一定会明白理解一些理论会让你在OpenGL的路上走得更远。

准备向OpenGL发送数据

OpenGL要求将所有的数据都存储在buffer对象中,所谓buffer对象就是OpenGL server维护的内存块。将数据存放在buffer中有很多种方法,但是最常用的一种是用 glBufferData()函数,在初始化buffer之前,还有一些额外的工作要做。

向OpenGL发送数据

当我们初始化好buffers之后,我们可以用OpenGL的绘制函数来绘制几何图元,比如glDrawArray().

OpenGL中的绘制通常意味着将顶点信息传送给OpenGL server。一个顶点意味着一个信息的集合,集合中有你想要的任何信息,几乎一定会包含顶点的位置信息,其他的&#;(比如法线)将会决定像素的最终&#;。

Vertex Shading

对于每一个需要渲染的顶点,vertex shader都会去处理和顶点相关的数据。根据在栅&#;化之前要激活哪些shader,vertex shader可能会非常简单,可能仅仅是将数据拷贝传递到下一个阶段 - 我们常称为是 pass-through shader。对于一个很复杂的vertex shader ,用于计算顶点在屏幕中的位置(通常会用到矩阵变换),计算顶点光照等等。

一个复杂的应用程序可能会有多个vertex shader,但每次只能执行一个。

Tesselation Shading

OpenGL渲染流水线(opengl 渲染yuv)

当vertex shader将每个相关的顶点都处理过一遍之后,如果tessellation shader 阶段被激活, tessellation shader 将会继续处理这些数据,tesselation用 patchs来描述一个物体,在这个阶段可以用一些相对简单的patch图形来细分模型来提供更好的外观, Tesselation Shading 阶段可以用两个shader来处理,一个用于处理patch 数据,一个用于生成最终形状。

Geometry Shading

下一个shader阶段是geometry Shading,在这个阶段可以在栅&#;化之前处理单个的集合图元,比如添加一些图元。这个阶段也是可选的,但是非常有用。

图元组装

前面的所有阶段都是在针对顶点的信息操作,图元组装阶段将顶点组装成一组相关联的几何图元,为后面的裁剪和栅&#;化做准备。

裁剪

有些点会在视口(你打算渲染的窗口)的外面,所以需要将和顶点相关的图元进行一些处理,将不在视口中的图元裁剪掉,这个过程叫做裁剪,是在OpenGL中自动处理的。

栅&#;化

裁剪之后马上要做的就是栅&#;化,裁剪之后的图元都传递到 raseriser 中生成fragment。可以将fragment当作是“候选像素”,这些像素存储在framebuffer中。栅&#;化之后得到的fragment还是能够改变颜色,处理这些fregments在下面两个阶段,fragment shading和 per fragment 操作。

Fragment Shading

可编程的最后一个阶段是fragment shading,在这里你可以控制fragments的颜色。在这个阶段,shader可以决定fragments的最终颜色(虽然在下一个阶段,per-fragment操作会最后一次改变颜色),fragment shaders非常地有用,在这里可以处理 texture mapping。如果一个fragment不应该被绘制,fragment shader也可以停止一个fragment的处理,这个过程称为 fragment discard。

一个很好的思考顶点shader和片段shader的不同点的方法是:vertex shading决定图元在屏幕中处于什么位置,fragment shading用前面的信息来决定fragment的颜色。

Per-Fragment Operations

这里指的是一些额外的fragment 处理,这是对每个fragment处理的最后阶段。在这里fragments的可见性由深度测试和模板测试决定。

OpenGL学习日记-..--简单裁剪 spanstyle=font-size:px;font-family:微软雅黑;line-height:px;Opengl中,除了视景体的立方体裁剪平面之外,另外还可以额外指定多达6个裁剪平面,对视景体做进一

OpenGL基础知识 本文转载于:

OpenGL 多边形偏移高亮物体边 Polygon offset 直接绘制一个物体两次分别以GL_FILL,GL_LINE会出现片段重叠现象,线框会断断续续的,这是由于片段深度浮点精度造成深度比较时出问题:解决办法:参

标签: opengl 渲染yuv

本文链接地址:https://www.jiuchutong.com/biancheng/373189.html 转载请保留说明!

上一篇:多边形画圆 vc6.0+opengl(绘制多边形工具使用方法)

下一篇:OpenGL学习日记-2014.11.26--简单裁剪(opengl使用教程)

  • 收购未税矿产品代扣代缴的资源税计入成本吗
  • 未达起征点的增值税要交企业所得税吗
  • 继续教育容易过吗
  • 房产税相关问题
  • 应收账款和应付账款的关系
  • 公司有流水不申报会怎么样
  • 纸质发票红冲操作流程
  • 单独计价作为固定资产入账的土地为什么不计提折旧
  • 金税三期会查之前的票吗
  • 辅助材料属于成本吗
  • 多交税款如何处罚
  • 土地增值税征收范围包括
  • 一般纳税人注销库存需要补交税吗
  • 受托代销商品手续费会计分录
  • 发生销货退回增值税专用发票如何处理
  • 餐饮会员充值赠送内帐怎么做账务处理
  • 营改增之后对企业的影响
  • 税控盘维护费是普票能全额抵扣吗
  • 福利费需要交纳个税吗
  • 电子发票开错了怎么解决?
  • 不动产的进项税额分两年抵扣吗?
  • 体现公司财务状况的报表
  • 工程建造过程中发生的在建工程人员工资180万尚未支付
  • 基金投资了能随时取出吗
  • 做财务报表是什么岗位
  • 出口退税免退税
  • 会计实操的重要性有哪些
  • linux 如何查看网卡信息
  • 王者荣耀中牛魔王的技能
  • php实现的中秋博饼游戏之绘制骰子图案功能示例
  • php上传大文件失败
  • 360安全路由器怎么重启
  • PQIBrowser.exe是什么进程 PQIBrowser进程查询
  • 港口机场铁路
  • 政府闲置土地
  • uni-app打包h5
  • php简单么
  • win10系统安装配置
  • 原材料按实际成本核算需设置的科目包括
  • php中删除文件的函数
  • bootz命令
  • 保险外币业务
  • 一般纳税人开发票给小规模纳税人
  • 企业可以将自己辞退吗
  • php采集器
  • 换货公司是否可信?
  • 减免税款借贷方表示
  • 已申报营业税未开发票
  • 税务查账后如何结转
  • 填写记账凭证的日期一般是会计人员填制记账凭证的
  • 交易性金融资产是什么意思
  • 红字发票账务处理需冲回成本吗?
  • 预付账款没有收到货怎么处理
  • 应付账款入账金额可以包括哪些内容?
  • 开出去的发票没有进项发票应如何核算成本?
  • 固定资产申请报告
  • 公司采购一直没有发票
  • 电商公司不用交税吗
  • 预缴增值税及附加可以在电子税务局申报吗
  • 暂估成本以后也没有票回来了
  • 一般纳税人月销售额10万以下
  • 住宿发票没有写天数
  • 固定资产可以一次性入费用的标准
  • 电脑买了四个月折旧多少
  • 应收其他应收区别
  • 资产损失扣除
  • Select count(*)、Count(1)和Count(列)的区别及执行方式
  • 如何使用一键启动
  • RunClubSanDisk.exe是什么程序? 闪迪U盘广告推介程序
  • ScanMailOutLook.exe - ScanMailOutLook是什么进程 有什么用
  • jquery.js
  • jquery 刷新div
  • js怎么删除
  • 用什么命令查看linux启动信息
  • Node.js发送HTTP客户端请求并显示响应结果的方法示例
  • angularjs2
  • javascript parseInt 函数分析(转)
  • jquery实现表格隔行换色
  • 南京国民政府统治和开辟革命新道路
  • 烟叶税比例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设