OpenGL 图形管道(graphics pipeline)过程
1.总结:Graphics pipeline 主要分为两部分工作
- 把3D坐标转换成2D坐标
- 把2D坐标转换成真实的有颜色的像素
2.下图就是一个顶点数据经过几个步骤后转化成显示在屏幕上像素的过程(一般也叫做GLSL的流水线工作流程),蓝色图形部分是我们可以通过写shader文件参与的,目前参与比较多的主要是顶点和片段shader。

3. 对上图每个步骤进行解析
3.1 Vertex Data[]传到顶点shader程序
3.2 顶点着色程序对顶点数据进行转换,把Vertex Data中的3D坐标转换成对应的不同于Vertex Data中的3D坐标,在这里,顶点着色程序允许用户进行一些基本的处理和顶点属性设置。
3.3 shape assembly(也叫 primitive assembly) 是一个对顶点数据进行简单的组合过程,比如上图就是把3个点组合成一个三角形。
3.4 简单组合后竟然几何着色程序,根据输入的vertices(顶点数据集)能生成新的或者说是其他的图形,在上图中生成了一个新的三角形.
3.5 经过几何着色后就会进入细分着色程序。在这里有能力生成更小更多的小的简单的图形,在上图中我们自己让它生成更小更多的三角形。
3.6 之后就是进入光栅化过程,在这里会把原始的图形最终转换成在屏幕上显示的相对应的像素,在这里会进行对显示内容进行判断(比如有些超出屏幕显示就会被截掉等),其中最终生成的片段会在片段着色器中使用。
3.7 片段着色器会计算每个像素在屏幕上显示的最终颜色
- OpenGL 3.3以后,OpenGL程序就必须要定义一个vertex shader 和 fragment shader(因为在GPU中没有默认定义的 vertex/fragment shaders)。
OpenGL 图形管道(graphics pipeline)过程的更多相关文章
- OpenGL ES 3.0 Graphics Pipeline
一:OpenGL ES 3.0 Graphics Pipeline 渲染管道如下图 1.Vertex Buffer/Arrays Objects的数据由应用程序传进来 2.由上图可以看到Textur ...
- OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...
- [译]Vulkan教程(13)图形管道基础之Shader模块
[译]Vulkan教程(13)图形管道基础之Shader模块 Shader modules Unlike earlier APIs, shader code in Vulkan has to be s ...
- CSharpGL(31)[译]OpenGL渲染管道那些事
CSharpGL(31)[译]OpenGL渲染管道那些事 +BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一 ...
- [译]Vulkan教程(16)图形管道基础之总结
[译]Vulkan教程(16)图形管道基础之总结 Conclusion 总结 We can now combine all of the structures and objects from the ...
- [译]Vulkan教程(14)图形管道基础之固定功能
[译]Vulkan教程(14)图形管道基础之固定功能 Fixed functions 固定功能 The older graphics APIs provided default state for m ...
- [译]Vulkan教程(12)图形管道基础之入门
[译]Vulkan教程(12)图形管道基础之入门 Introduction 入门 Over the course of the next few chapters we'll be setting u ...
- OpenGL图形渲染管线、VBO、VAO、EBO概念及用例
图形渲染管线(Pipeline) 图形渲染管线指的是对一些原始数据经过一系列的处理变换并最终把这些数据输出到屏幕上的整个过程. 图形渲染管线的整个处理流程可以被划分为几个阶段,上一个阶段的输出数据作为 ...
- [译]Vulkan教程(15)图形管道基础之RenderPass
[译]Vulkan教程(15)图形管道基础之RenderPass Render passes Setup 设置 Before we can finish creating the pipeline, ...
随机推荐
- js 对象 视频 插入元素
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- hdu_5874_Friends and Enemies(公式题)
题目链接:hdu_5874_Friends and Enemies 题意: 有nn个人, mm种颜色的石头, 人两两之间要么是朋友, 要么是敌人. 每个人可以携带若干种石头或者不带, 要求朋友之间至少 ...
- Struts入门学习(一)
刚开始学习框架的时候感觉很简单,都是用到javaEE的相关框架,自己就想研究源码,但是学了很久之后毫无头绪,所以还是扎扎实实学好Struts毕竟框架做起来要比自己写javaEE要简单,下面我们就来一步 ...
- Django中使用Bootstrap
一.在Django中引用Bootstrap模版 1.首先下载bootsrtap代码(http://v3.bootcss.com/getting-started/#download),并将下载后的文件放 ...
- CSS,height:auto和height:100%有什么区别?
auto是随内容的高度而撑开的.100%是根据父级元素的高度来决定的.例如:<div style="height:100px;width:200px;"> <di ...
- MT4 图表上设置字符
; int start() { //---- ObjectCreate(, , ); string str = "<"; string show ; ;i<x;i++) ...
- stm32时钟配置总结
stm32时钟配置时钟源: 1,HSE(高速外部时钟)即常见的外接8M晶振方案: 2,HSI(高速内部时钟) 即8M内部振荡时钟方案: 3,LSE(低速外部时钟)即常见的32.768Khz晶振方案: ...
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...
- ssh连接ubuntu提示连接不上的问题
今天在自己的电脑上安装了最新版本的 ubuntu (我都在root用户下运行,非root用户请添加sudo命令) uname -rvo 运行结果为 3.13.0-32-generic #57-Ubun ...
- yii2图片验证码
控制器LoginController.php <?php namespace backend\controllers; use Yii; use yii\debug\models\search\ ...