OpenGL渲染的基本流程
来源:互联网 发布:混沌摆淘宝 编辑:程序博客网 时间:2024/05/22 14:16
小华同学的学习笔记
仰望星空,脚踏实地
(一)OpenGL渲染的基本流程
版权声明:本文为博主原创文章,未经博主允许不得转载。
总结自教程:http://www.learnopengl.com/#!Getting-started/Hello-Triangle
OpenGL中的坐标是带有深度信息的三维坐标,把这些三维坐标转换成可以在LCD上显示的二维坐标,这个过程叫做pipeline。pipeline分为以下两个步骤:
第一步:将坐标值由3D的转换成2D。
第二步:对第一步中的2D坐标赋予颜色值(RGBA)。
GPU的并行运算,就是同时跑成千上万个小程序,这些小程序都在执行pipeline这一流程。
这一个个小程序,就成为OpenGL中的Shader。
pipeline流程中通常包含以下6种shader,我们可以编辑的shader为蓝色的部分。
上面的pipeline是画一个三角形。
请注意,可以设置OpenGL的构图方式,可以将输入的点构成线条、三角形以及多边形等等。可以这只shader中的构图方式为:GL_POINTS, GL_TRIANGLES and GL_LINE_STRIP等。
第一步,将三维数据导入vertex shader,vertex就是顶点信息,在这个例子中就是三角形的3个顶点。vertex shader中包含了坐标以及颜色值信息。vertex shader的主要工作就是将3D坐标转成不同的3D坐标(下面章节中将会有详细介绍)。
第二步,primitive assembly将上一步中的顶点信息,构成一个基本的图形,这里是三角形。
第三步,geometry shader将上一步中的基本图形在变换成其它图形,而这个变换中不需要增加新的顶点信息。这个例子中,将上一步中的一个三角形变换成了两个三角形。
第四步,rasterization ,译成中文就是“光栅化”。也就是将一个线条形状转化成实际的像素点,这些像素点是没有颜色信息的。
第五步,fragment shader。这一步是计算上一步中每个像素点的最终像素值,往往OpenGL的算法都放在这一步执行。
第六步。在最终的颜色值确定之后,最后一步为alpha test and blending,也就是透明度调整以及混色。这一步根据fragment的深度信息,检测每一个fragment有没有被其它fragment遮挡,根据遮挡的程度来设置当前fragment的透明度,然后将这些叠加在一起的fragment进行混色。所以尽管每个三角形的颜色都在fragment shader中确认下来了,但是最终的现实效果可能和上一步中的颜色信息完全不一致。
- 顶
- 踩
- 上一篇VR中的图形畸变
- 下一篇(二)OpenGL中的Shader
参考知识库
算法与数据结构知识库
- 猜你在找
核心技术类目
- 个人资料
- 访问:15881次
- 积分:319
- 等级:
- 排名:千里之外
- 原创:15篇
- 转载:0篇
- 译文:0篇
- 评论:6条
BeyondTheBuzzer
- 文章搜索
- 文章分类
- MCU编程(4)
- OpenCV学习(4)
- Android开发(2)
- VR(1)
- OpenGL学习笔记(2)
- ROS学习笔记(2)
- 四轴飞行器(1)
- 文章存档
- 2016年09月(5)
- 2016年01月(1)
- 2015年05月(1)
- 2015年03月(3)
- 2015年02月(1)
- 阅读排行
- OpenCV手势识别-手掌特征提取(3272)
- 开源四轴飞行器CC3D的稳定模式和PID算法简介(2172)
- Linux开源智能视频监控软件zoneminder的安装(1532)
- VR中的图形畸变(1405)
- OpenCL嵌入式图像处理(1126)
- (一)OpenGL渲染的基本流程(845)
- 飞思卡尔KL25Z开发板开发经验(799)
- OpenCV 将Mat数据转成Video格式视频(784)
- 用OpenCV的随机树算法(Random Forest Tree)进行手势检测(747)
- Android Bitmap加载透明背景图片(729)
- 评论排行
- OpenCV手势识别-手掌特征提取(4)
- Linux开源智能视频监控软件zoneminder的安装(1)
- 用OpenCV的随机树算法(Random Forest Tree)进行手势检测(1)
- OpenCV 随机森林(Random Forest)手势识别应用---样本选择问题(0)
- Android Bitmap加载透明背景图片(0)
- android 自定义POP window弹出窗口,用于信息提示(0)
- Linux Ubuntu环境下对SD卡分区(烧写uboot,kernel,及filesystem)(0)
- OpenCL嵌入式图像处理(0)
- OpenCV 将Mat数据转成Video格式视频(0)
- (一)ROS的Roscore命令(0)
- 推荐文章
- * 云计算的那些事儿之计算虚拟化
- * 微服务--分布式事务的实现方法及替代方案
- * 你应该知道的 Android 数据库更新策略
- * HDFS副本放置节点选择的优化
- * CSDN日报20170416 ——《为什么程序员话少钱多死得早?》
- * 凡人视角C++之string(上)
- 最新评论
- OpenCV手势识别-手掌特征提取
VictorChi: 你的图片是晚上拍的吗?白天用红外线摄像头怎么拍出这样的图片
- OpenCV手势识别-手掌特征提取
午夜小学徒丶磊: 怎么集成到XCode,文件缺少啊。
- OpenCV手势识别-手掌特征提取
BeyondTheBuzzer: @songrui_Lai:同事在淘宝买的,具体型号不太清楚。普通的红外摄像头即可。
- 用OpenCV的随机树算法(Random Forest Tree)进行手势检测
woxiangjiayou: 请问你的训练识别代码还有吗?
- OpenCV手势识别-手掌特征提取
songrui_Lai: 请问工程用的是哪种红外摄像头?
- OpenGL渲染的基本流程
- (一)OpenGL渲染的基本流程
- OpenGL的渲染流程梳理
- OpenGL: OpenGL渲染流程
- OpenGL-渲染管线的流程(有图有真相)
- OpenGL-渲染管线的流程(有图有真相)
- OpenGL-渲染管线的流程(有图有真相)
- OpenGL-渲染管线的流程(有图有真相)
- opengl渲染流程
- Opengl es渲染流程
- opengl 渲染流程
- OpenGL渲染流程
- OpenGL渲染流程
- 【OpenGL】OpenGL渲染流程详解
- OpenGL的基本工作流程
- 计算机图形学00一一 OpenGL 渲染管线的流程
- Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程
- Cocos2d-x 3.2与OpenGL渲染总结(一):Cocos2d-x 3.2的渲染流程
- Windows下配置gVim
- nyoj-水池数目
- LintCode-删除元素
- java网络编程
- 创建自己项目的组件API
- OpenGL渲染的基本流程
- teamviewer 实现 vpn 功能
- 不同浏览器兼容性——常用的CSS Hack技术
- cookie到底是怎样存储数据的
- WOWZA的安装及(VOD+LIVE)简单配置和VLC RTP推流
- 【git使用】Failed to connect to 127.0.0.1 port 1080: Connection refused
- (1)Hadoop 1.2.1伪分布搭建
- 中转站
- 简单的文本行编辑程序——基于栈
暂无评论