OpenGL官方教程——着色器语言概述
OpenGL官方教程——着色器语言概述
可编程图形硬件管线(流水线)
将 Pertransformed Vertices (每一个待转换顶点)
传人 Programmable Vertex Processor (可编程的顶点处理器)
得到 Transformed Vertices (转换的顶点)
将 Transformed Vertices (转换的顶点)
传入 Programmable Geometry Processor (可编程的几何处理器)
得到 Assenbled Polygons,Lines,or Points (组装 多边形、线或点)
进行 Clipping,Rasterization and Interpolation (裁剪,光栅化和插值)
得到 Rasterized Pertransformed Fragments (光栅化待转换的片元[片段])
传入 Programmable Fragment Processor (可编程的片元处理器)
得到 Transformed Ftagment (转换的片元)
进行 Raster Operations (光栅运算)
进行 Pixel Update (像素更新)
传入 Frame Buffer (帧缓冲区)

可编程顶点处理器
顶点处理器是一个可编程的单元,该单元对传入的顶点属性,如位置、颜色、纹理坐标等进行操作。顶点处理器的目的是执行传统的图形操作,如顶点变换,法线变换/归一化,纹理坐标的生成,和纹理坐标变换。
顶点处理器只有一个顶点作为输入,只写一个顶点作为输出。顶点的拓扑信息是不可用的。
可编程几何处理器
几何处理器允许访问几何形状(线、三角形、四边形等),它甚至可以创建新的几何形状。然而,几何着色器并不是OpenGL着色器语言规范的一部分。这是一个多厂商的扩展(multivendor extension),目前可用的(开发商)显卡是NVIDIA GeForce 8系列显卡。因为这是OpenGL着色器语言中非常重要的一个扩展,所以在这个教程提到它。(如果你不想或不能使用几何着色器,简单的忽略它,使用固定功能管线来做)
可编程片元处理器
片元(片段)处理器的目的是用于执行一些传统的图形操作。例如计算插值、纹理访问、纹理应用、雾化、颜色求和等。
语言
OpenGL着色器语言有点类似于C语言。顶点着色器、几何着色器和片元(片段)着色器都必须有一个入口函数"void main()"。
我可以在这里写一个完整的语言规范,但我认为,更好的方法是看学习示例。在下一节中介绍了一个简单的着色源代码。每一段都有一个简单的源代码下载。下载那些例子和修改它是学习GLSL的一个很好的方式,你自己进行实践!
你也应该下载官方GLSL语言规范。你可以点击这里获取(在”Miscellaneous Documents”下面)。
OpenGL官方教程——着色器语言概述的更多相关文章
- OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)
OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...
- OpenGL ES着色器语言之操作数(官方文档第五章)
OpenGL ES着色器语言之操作数(官方文档第五章) 5.1操作数 OpenGL ES着色器语言包含如下操作符. 5.2数组下标 数组元素通过数组下标操作符([ ])进行访问.这是操作数组的唯一操作 ...
- OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,unifo ...
- OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围
OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章) 所有变量和函数在使用前必须声明.变量和函数名是标识符. 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符. ...
- OpenGL ES着色器语言之静态使用(static use)和预处理
OpenGL ES着色器语言之静态使用(static use) 在OpenGL ES中有一个术语叫静态使用(static use),什么叫静态使用呢? 在写代码中,对于一个变量可能具有以下三种情况: ...
- OpenGL ES着色器语言之着色概览(官方文档)
OpenGL ES着色器语言之着色概览(官方文档第二章) 事实上,OpenGL ES着色语言是两种紧密关联的语言.这些语言用来在OpenGL ES处理管线的可编程处理器创建着色器. 在本文档中,除非另 ...
- Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
前面的文章主要是整理的Android 官方文档对OpenGL ES支持的介绍.通过之前的文章,我们基本上可以完成的基本的形状的绘制. 这是本人做的整理笔记: https://github.com/re ...
- OpenGLES2.0着色器语言glsl
OpenGLES2.0中是强制使用可编程的渲染管线的,使用的是glsl着色器语言,因为着色器语言是使用的GPU,即图形处理单元,而不是CPU,这样可以使CPU从繁重的几何计算和像素的处理中解脱出来了. ...
- 着色器语言GLSL入门
着色器语言 GLSL (opengl-shader-language)入门大全 -- 转载自: https://github.com/wshxbqq/GLSL-Card
随机推荐
- C#----格式化字符串的操作
class Program { static void Main(string[] args) { //DateTime dt = DateTime.Now; //Console.WriteLine( ...
- docker网络基础配置
常用两种方式: 1)映射容器端口到宿主机 2)容器互联机制 --------------------------------------------- 端口映射实现访问容器的用法: docker ru ...
- centos6.5yum方式升级内核
升级内核需要使用elrepo的yum源,在安装yum源之前还需要我们导入elrepo的key,如下:rpm -import https://www.elrepo.org/RPM-GPG-KEY-elr ...
- 初识Python类
吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼. 类的语法 class Person(object): print("learning class&q ...
- JS中两个重要的方法 call & apply 学习
正题: Function.prototype.apply(instance,args) //args 数组 Function.prototype.Call(instance,a1,a2) //a1 ...
- python 多线程学习
多线程(multithreaded,MT),是指从软件或者硬件上实现多个线程并发执行的技术 什么是进程? 计算机程序只不过是磁盘中可执行的二进制(或其他类型)的数据.它们只有在被读取到内存中,被操作系 ...
- WAMPSERVER 64位 win7下 php 5.5.12通过 PECL 安装 zip扩展
通过phpinfo()查看 php5.5.12默认集成了zip模块 不过版本是1.11.0 http://pecl.php.net/package/zip 通过PECL 查看 最新版本是1.12.4 ...
- windows下vmware10.0 安装centos7
centos7.0-1506, 1511, 是指2015年, 06月份, 11月份. 这是rhel ubuntu发布新版本的时间. centos7.0 只提供了64位的系统下载: x86_64: we ...
- javascript 数据类型转换
javascrīpt 类型转换函数 在Javascrīpt中,Double类型和Int类型都是看作为Number对象. 1.Number转成String number.toString() Strin ...
- vector族函数
本文原创,转载请注明出处,本人Q1273314690 vector(mode = "logical", length = 0) as.vector(x, mode = " ...