opengl渲染管线

前言:在OpenGL中,任何事物都在3D空间中,但是屏幕和窗口都是2D像素数组,因此OpenGL大部分工作都是将3D坐标转化为适应屏幕的2D像素。3D坐标转化为2D坐标的过程是OpenGL的Graphics Pipeline(图形渲染管线)管理的,图形渲染管线是指一堆原始图形数据途径一个输送管道,期间经过各种变化处理最终出现在屏幕上的过程。一般包括连个部分,第一部分是把3D坐标转换位为2D坐标,第二部分是把2D坐标转化为实际有颜色的像素。

图形渲染管线接受一组3D坐标,然后把它们转化为屏幕上有色的2D像素输出。管线可以被划分为好几个阶段,每个阶段将上一阶段的输出作为输入,所有这些阶段都是高度专门化的(它们都有一个特定的函数),很容易并行执行。因为很容易并行执行,所有现在显卡都有成千上万的小处理核心,它们在GPU上为每个阶段运行各自的小程序,从而在管线中快速处理数据,这些小程序叫着色器(shaser)

下面是管线的每个阶段的展示,蓝色部分代表的是我们可以注入自定义的着色器部分。

顶点着色器(Vertex Shader):首先介绍下顶点着色的输入是顶点数据,顶点数据(Vertex Data)是一系列顶点的集合,一个顶点(Vertex)是一个3D坐标数据的集合,通常用顶点数据表示,顶点属性一般包括3D位置和一些颜色,还有一些其他信息,暂且理解成有这两种。

顶点着色的过程就是输入一个单独的顶点,把3D坐标转换到另一种3D坐标(物体坐标,世界坐标,屏幕坐标,视口坐标),同时还对顶点属性进行一些基本处理。

图元装配(Primitive Assembly):图元装配的输入就是顶点着色输出的所有顶点,装配成指定图元的形状,GL_POINTS就是一个点,三角形的话就是GL_TRANGLES。

几何着色器(Geometry Shader):几何着色器的输入就是图元装配的输出,也就是一系列顶点,可以通过产生新顶点构造出新的(或是其他的)图元来生成其他形状。

光栅化(Rasterization Stage):将基本图元通过线性插值法生成像素,其实解释到这里我觉得比较容易理解,(生成供片段着色器使用的片段(Fragment)) 理解成片段反而不易理解,片段是OpenGL渲染一个像素所需的所有数据。另外就是在片段着色之前,在光栅化后会进行裁剪,裁剪会丢弃超出你视图以外的所有像素,用来提升效率。

片段着色器:对光栅化阶段输出的每个像素进行处理,常用来实现一些特效,主要作用计算一个像素的最终颜色,通常片段着色器包含3D场景的数据(光照,阴影,光的颜色等等)

在以上过程中,至少要定义顶点着色器和片段着色器,几何着色器是可选的,通常选择默认的着色器即可。

opengl渲染管线(Graphics Pipeline)相关推荐

  1. 《OpenGL编程指南(原书第9版)》——1.4 OpenGL渲染管线

    1.4 OpenGL渲染管线 OpenGL实现了我们通常所说的渲染管线(rendering pipeline),它是一系列数据处理过程,并且将应用程序的数据转换到最终渲染的图像.图1-2所示为Open ...

  2. 着色 Shading,漫反射,高光,环境光,Blinn-Phong 反射模型,Flat Shading,Gouraud Shading,图形管线 Graphics Pipeline渲染总结

    着色 Shading shading:The darkening or coloring of an illustration or diagram with parrel lines or a bl ...

  3. 小强学渲染之OpenGL渲染管线详析

    什么是OpenGL? OpenGL是一套图形硬件的软件API接口库,它直接和GPU交互,将3D场景渲染绘制到2D屏幕上.总结说,OpenGL的功能是将程序中定义的各种2D或3D模型绘制到帧缓存中,或者 ...

  4. OpenGL渲染管线,着色器,光栅化等概念理解

    卧槽,前些日子看这几个概念就十分想吐槽,这么难理解的概念窃以为纯属翻译的不够接地气. ---- 首先,光栅化(Rasterize/rasteriztion). 这个词儿Adobe官方翻译成栅格化或者像 ...

  5. OpenGL 渲染管线理论

    这几天稍微看了一些关于GLSL的顶点着色以及片元着色的一些相关知识.目前来讲还有一个着色器则是Geometry_shader..我的显卡用不了这个功能..当然有点遗憾>_<..       ...

  6. OpenGL: 渲染管线理论

    学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解. 零.首先要知道几个OpenGL的术语 渲染(rendering):计算机根据模型(model)创建图像的过程. 模型 ...

  7. OpenGL 渲染管线理论

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 学习着色 ...

  8. OpenGL渲染管线之简单示例(五)

    前言:这一章我们将对前面的所有知识进行实践,通过OpenGL编程,完成一个简单的OpenGL程序.你可以通过访问我的GitHub获取我学习的HelloOpenGL项目.这个项目需要的所有头文件及库均配 ...

  9. OpenGL渲染管线介绍

    一.概述 OpenGL是跨平台计算机图形应用程序的应用规范,广泛应用于仿真.游戏.GIS系统等领域,实现二三维图形的渲染.OpenGL渲染过程需要经历CPU.GPU两个阶段,CPU中进行图形计算,完成 ...

最新文章

  1. 有关包络Spectral Envelope的疑问
  2. [codevs 1911] 孤岛营救问题
  3. Qt Creator使用材质和明暗器Using Materials and Shaders
  4. Hologres揭秘:如何支持超高QPS在线服务(点查)场景
  5. 找到的程序集清单定义与程序集引用不匹配
  6. linux基础-文本编辑器,Linux基础之vim文本编辑器
  7. E 定向 牛客练习赛25
  8. CF 799B T-shirt buying
  9. 企业级微服务框架 NutzBoot 2.3.0.v20190220 发布
  10. 北京python程序员求职_想找python程序员的工作,但发现稍微好点的职位都集中在北京。我非常想当python程序员,北京值得去吗?...
  11. linux 6.7 ifcfg eth0,centos 的ifcfg-eth0只有只读权限,怎么修改其内容呢?
  12. miniprogrampatch 提供 watch 和 computed 特性
  13. c语言诗歌生成程序,在线诗歌生成器
  14. 代理ip按功能分哪几类?
  15. 不下心删了线上环境mysql数据库数据,辛亏有惊无险
  16. 【neusoft】 Linux 的学习与使用
  17. OSPF虚链路配置及认证
  18. MCU内部参考电压几种妙用你都知道嘛
  19. Ubuntu18.04 LTS 安装 Synopsys VCS及一些问题
  20. 如何使用阿里云接口对系统用户【身份证】实名认证

热门文章

  1. 计算机体系结构——内存
  2. Python函数式编程:map/reduce
  3. 怎么注册国外企业电子邮箱地址?有微信企业邮箱登录入口吗?
  4. java雷霆战机小游戏(git 素材+代码)
  5. 字幕:《李开复谈创新思维》上
  6. %20ld c语言,C语言第二次实验报告 - osc_ldea7g3t的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. Python 求解方程
  8. 浙江大学计算机科学博士生导师名单,浙江大学计算机科学技术学院博士研究生导师简介:孙建伶...
  9. ArcGis配色心得
  10. (强制)类型转换方法