赞
踩
1、图元:是图形软件中用来描述各种图形元素的函数。图元是组成图像的单位,在OpenGL ES中,点、线、三角形是OpenGL的基本图元,多边形由若干个三角形组成,圆则由无数个三角形无限逼近得到的。
2、渲染:表示计算机从模型创建最终图像的过程(OpenGL只是其中一种渲染系统)OpenGL是基于光栅化的系统用于生成图像。
3、模型:物体对象或场景对象,是通过几何图元来构建的,图元与模型的顶点也存在这对应的关系。
4、光栅化:将数学描述转换为屏幕位置相对应的像素片元。
5、着色器:专为图形处理单元GPU编译的小程序,OpenGL在内部包含了所有编译器工具,可以从着色器源代码创建GPU所需的编译代码并执行。常用的着色器有顶点着色器、片元着色器等。
6、像素:显示器上最小的可见单元。
7、片元:候选的像素,可以放置在帧缓冲区的像素,但他也可能被剔除。
8、OpenGL渲染管线
渲染流水线:是显示芯片内部处理图形信号互相独立的并行处理单元。简单点来说,就是一系列有序的处理阶段的序列,用于把我们应用中的数据转化到OpenGL生成一个最终图像的一个过程。
OpenGL着色语言(OpenGL Shading Language)专门为图形开发设计的编程语言。
1、注释:
单行注释:“//”
多行注释:“/*...*/”
2、main()没有返回值
3、每条语句结尾都必须添加一个";"
4、Android上OpenGL ES2.0中基本数据类型:
浮点型(float)、布尔型(bool)、整型(int)、矩阵型(matrix)以及向量型(vec2、vec3等)等。 总体来说,
这些数据类型可以分为标量、向量、矩阵、采样器以及数组等几类。
4.1、标量类型
类型 | 描述 |
int | 有符号二进制补码的32位整数 |
uint | 无符号的32位整数 |
float | EEE 32位浮点值 |
bool | 布尔值 |
4.2、向量类型
基本类型 | 2D向量 | 3D向量 | 4D向量 |
int | vec2(包含两个浮点型的向量) | vec3 | vec4 |
float | ivec2 | ivec3 | ivec4 |
bool | bvec2 | bvec3 | bvec4 |
向量的初始化:
a、使用这些类型声明的变量的初始化过程 与 标量部分是类似的:
vec3 xyz=vec3(0.0,0.2,0.3);
vec4 rgba=vec4(0.0,0.2,0.3,1.0);
b、加长
vec3 xyz=vec3(0.0,0.2,0.3);
vec4 rgba=vec4(xyz,1.0);
c、取短
vec4 rgba=vec4(0.0,0.2,0.3,1.0);
vec3 xyz=rgba.rgb;
vec3 xyz=rgba.xyz;
d.vec3 xyz=vec3(1.0);等价于vec3 xyz=vec3(1.0,1.0,1.0);
4.3、矩阵类型
基本类型 | 矩阵类型 | 矩阵类型 | 矩阵类型 |
float | mat2 | mat3(3*3的矩阵) | ma |
矩阵的初始化:
第一种方式:mat3 m=mat3(1.0 , 2.0 ,3.0 , 4.0, 5.0, 6.0, 7.0 ,8.0 , 9.0);
第二种方式:vec3 column1=vec3(1.0 , 2.0 ,3.0 );
vec3 column2=vec3(4.0, 5.0, 6.0 );
vec3 column3=vec3( 7.0 ,8.0 , 9.0 );
mat3 m=mat3(column1,column2 ,column3);
,column3 ,9.0);
4.4、结构体:从逻辑上将不同类型的数据组合到一个数据集合中
作用:方便使用,检查运算
定义:
struct info(){
vec3 color;
vec4 xyzw;
vec2 st;
}
采样器:
采样器类型 | 说明 |
sampler2D(常用) | 用来访问二维贴图 |
sampler3D | 用来访问三维贴图 |
samplerCube | 用来访问立方贴图 |
4.5、数组:有限个类型相同的变量集合
GLSL数组特性以及注意事项:
a、GLSL支持任意类型数组,包括结构体
b、数组的索引是从0开始的
c、数组可以定义大小、或者没有大小,但是建议在不必要的情况下,还是指定大小的好。
d、数组属于GLSL的第一等类型:
数组在GLSL里面是有构造函数的,并且可以用作函数的参数和返回值类型
可以静态初始化一个数组的值
数组的定义:
一维数组:
float c[3];
float[3] c;
int index[]; //未定义维数,稍后可以重新声明
二维数组:
float c[3][5];
c.length(); //得到长度为3,待验证
c[2].length(); //得到长度为5
4.6、空类型
空类型用void表示,仅用来声明不反悔值的函数
5、类型修饰符
attribute:一般用于经常修改的信息,例如:颜色、顶点......
a、只有在顶点着色器中才会有这哥们(attribute)
b、attribute是属性限定符
c、只能用来修饰浮点数的标量、浮点数的向量、浮点数的矩阵变量,不能用于修饰其他类型
uinfrom:用于不经常更改的信息,用于顶点着色器和片元着色器
a、uinfrom是一致变量限定符
b、主要出现在顶点和片元着色器
c、可以修饰任何类型的变量
verying:用来传递顶点着色器中的数据到片元着色器中
const:被const修饰的变量值不可变,常量,编译时常量
(编译时常量:在声明时要进行初始化,编译器在编译的时候不需要给他分配任何运行时资源)
int和out:用in修饰的变量代表的是输入变量,用out修饰表示的输出变量
inout:用来修饰参数试试输入输出参数,同时具有两种功能
5.变量命名规范:允许使用字母、数字、以及"_"来组成。
注意:
1、数字和下划线不能为变量名的首字符;
2、变量名不能出现连续下划线;
3、系统变量都是以“gl”开头,因此用户自定义的变量名不能以“gl”开头;
4、见名知意,若变量名由多个单词组成,第一个单词的首字符应为小写字母,其余单词的首字符应为大写字母
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。