OpenGL ES 3.0 基础知识
首先要了解OpenGL的图形管线有哪些内容,再分别去了解其中的相关的关系;
管线分别包括了顶点缓冲区/数组对象,定点着色器,纹理,片段着色器,变换反馈,图元装配,光栅化,逐片段操作,帧缓冲区。其中顶点着色器和片段着色器是管线的可编程阶段。
顶点着色器
其实现了顶点操作的通用可编程方法,其的输入包括了如下:着色器程序-描述顶点上执行操作的顶点着色器程序源代码或者可执行程序么,其实就是那个glsl的文件。
顶点着色器输入(或者属性)-用顶点数组提供的每个顶点的数据,应该是着色器程序语言中的那个attribute语句。
统一变量(uniform)-顶点(或者片段)着色器使用的不变数据。应该是使用了uniform的语句。
采样器-代表顶点着色器使用纹理的特殊统一变量类型。应该是使用了sample的语句。
有个注意的地方,在OpenGL ES 2.0中,顶点着色器的输出称作可变变量,也就是varying的语句,但是在3.0中改名为顶点着色器输出变量。
图元光栅化阶段,可以将每个生成的片段计算顶点着色器输出值并作为输出传递给片段着色器。在3.0中,增加一个新的功能,变换反馈,可以使顶点着色器的输出可以选择性的写入到一个输出缓冲区,而不一定会传送到片段着色器。
其中,统一变量uniform,存储组合的模型视图喝投影矩阵。顶点着色器的输入in,顶点着色器的输出out;
- 图元装配
顶点着色器之后,下一阶段就是图元装配,图元是三角形、直线或者精灵等几何对象,图元的每个顶点被发送到顶点着色器的不同拷贝。在图元装配期间,这些顶点被组合成图元。
对于每个图元,必须确定图元是否位于视锥体(屏幕上可见的3D空间区域)内,如果图元没有完全在视锥体之内,则可能需要进行裁剪,如果图元完全在该区域之外,它就会被抛弃,裁剪之后,顶点位置被转换成屏幕坐标,或者进行一次淘汰操作,根据图元面向前方或者后方来抛弃它们。接下来就可以进入到管线的下一阶段-光栅化阶段。
- 光栅化
此时,绘制的图元仍是点精灵或者直线或者三角形精灵等等。其实光栅化就是将这些图元转化成一组二维片段的过程,每个片段的输出包括了屏幕坐标,颜色等属性和纹理坐标等。然后,这些片段由片段着色器来处理。
- 片段着色器
在光栅化阶段对于每个图元生成的每个片段都会去执行这个片段着色器的程序。采用如下的输入:
着色器程序,描述片段上所执行操作的片段着色器源代码或者可执行程序。
输入变量,光栅化单元用插值为每个片段生成的顶点着色器输出,也就是顶点着色器中的输出值作为其的输入变量。
统一变量,片段(或者顶点)着色器使用的不变数据。
采样器,代表片段着色器所用纹理的特殊统一变量类型。
片段着色器可以抛弃片段,也可以生成一个或者多个颜色值作为输出。一般来说,除了渲染到多重渲染之外,片段着色器只输出一个颜色值,在多重渲染目标的情况下,为每个渲染目标输出一个颜色值。光栅化阶段生成的颜色、深度、模版和屏幕坐标位置变成管线逐片段的输入。
注意的是,顶点着色器必须输出和片段着色器读入的同一组变量。
- 逐片段操作
其中,逐片段的操作包括很多的操作,包括了
片段数据,像素归属测试,裁剪测试,模版测试,深度测试,混合,抖动。
其中片段的数据也就是执行了片段着色器的操作后的数据。
像素归宿测试,确定帧缓冲区中位置的像素目前是不是归OpenGL es所有。这个测试能够使窗口系统能够控制帧缓冲区中的哪些像素属于当前OpenGL es的上下文。比如一个显示OpenGL es帧缓冲区窗口的窗口被另一个窗口所遮蔽,则窗口系统可以确定被遮蔽的像素不属于OpenGL es上下文,从而完全不显示这些像素,这个由OpenGL es内部进行,不受人的控制。
裁剪测试,确定是否位于作为OpenGL es状态的一部分的裁剪矩形范围内。
模版和深度测试,这些测试将在输入片段的模版和深度值上进行,以确定片段是否应该被拒绝。
混合,将新生成的片段颜色值和保存在帧缓冲区位置的颜色值结合起来。
抖动,可用于最小化,因为使用有限精度在帧缓冲区中保存颜色值而产生的伪像。
转载于:https://www.cnblogs.com/George1994/p/6243671.html
OpenGL ES 3.0 基础知识相关推荐
- OpenGL ES 2 0 (iOS)[06 1]:基础纹理
前言:如果你没有 OpenGL ES 2 的基础知识,请先移步 <OpenGL ES 2.0 (iOS) 笔记大纲> 学习一下基础的知识. 目录 一.软件运行效果演示 (一).最终效果 ( ...
- OPENGL ES 3.0 学习总结
Opengl ES是opengl的一个分支,opengl es集中了opengl中高效的绘图功能部分,省去了低效繁杂的绘图功能部分,主要应用于手持和嵌入式设备的3D绘图,突出的优点就是处理快,消耗小. ...
- Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.6节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括
更多图形知识请关注我的公众号: 前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算.看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的 ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...
本节书摘来自异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区&q ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.1节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- OPENGL ES 2.0 知识串讲 (10) ——OPENGL ES 详解IV(纹理优化)
上节回顾 上一节学习了如何从一张原始图片中,获取生成纹理所需要的信息,然后根据这些信息,通过OpenGL ES API在GPU内存中生成了一张纹理,并且还介绍了纹理属性,知道了如何通过纹理坐标将纹理映 ...
- 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.8节本章小结
本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.8节本章小结,作者 吴亚峰,更多章节内容可以访问云栖社区"异步社区 ...
最新文章
- 微服务架构转型需要关注的运维监控的技术和建议
- 干货丨从线性回归到无监督学习,数据科学家需要掌握的十大统计技术
- android 中使用ExpandableListView控件结合服务器json文件的下载
- html天气插件iframe,分享常用7款天气预报代码iframe嵌入网页方式
- 微软职位内部推荐-Software Development Engineer 2
- 2017.9.15 postgresql批量插入造成冲突后执行更新
- 数据结构探险——图篇
- 网站内容排版可用性分析
- 小新pro13睡眠后无法唤醒_电脑休眠后,就无法唤醒了?怎么办?快速教你解决这个问题...
- Java字节码技术javassist
- 白帽黑客必备的网络安全基础问答
- RGBA、YUV色彩格式及libyuv的使用
- 教师公开课卡通动态通用PPT模板
- 【建议背诵】2022下半年软考「高项」100题(2)
- calibre(电子书管理)软件的使用
- IP地址归属地查询完整版
- 软件卸载不了怎么办?快用IObit Uninstaller Pro软件卸载大师
- FIR数字滤波器的设计[Matlab][带源码]
- SQL服务器日志自动收缩,SQLServer2008日志收缩
- 【bzoj4146】 [AMPPZ2014]Divisors
热门文章
- java 数组map_java中 数组 list map之间的互转
- 【大牛疯狂教学】cdhkafka打开的文件描述符临界阈值
- 前方高能!金三银四Java高级工程师面试题整理
- PyTorch中的Element-wise operations
- 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY13-半监督学习
- php能做定时关机吗,浅谈系统的定时关机
- 进阶学习(3.1) Simple Factory Pattern 简单工厂模式
- 网站优化过度后会出现哪些“后遗症”?悠着点~
- 欧洲最大云服务公司火灾!数百万网站出现故障企业网络推广大型瘫痪现场!...
- 快速提升网站SEO优化排名技巧有哪些?