OpenGL ES 3.0编程指南学习笔记 第6章 顶点属性、顶点数组和缓冲区对象
2017-03-19 22:12
603 查看
1)vec2等为float型,也就是着色语言默认为float操作。float,vec2,vec3,vec4
2)矩阵以列优先顺序存储,也就是说矩阵可以看做是由几个列向量组成,例如;
mat3 myMat3 = mat3(1.0, 0.0, 0.0,//First column
0.0, 1.0, 0.0,//Second column
0.0, 1.0, 1.0//Third column
);
vec4 col0 = myMat4[0];
float m1_1 = myMat4[1][1];
3)支持const,结构体
4)支持数组,例如:
float a[4] = float[](1.0, 2.0, 3.0, 4.0);
float b[4] = float[4](1.0, 2.0, 3.0, 4.0);
vec2 c[2] = vec2[2](vec2(1.0), vec2(1.0));
5)向量加法,向量与矩阵乘法,矩阵与矩阵乘法满足线性代数特性;
向量与向量乘法不满足线性代数特性,只是各个分量单独相乘,类似卷积。
6)函数支持in/out/inout限定符,in表示参数按值传送,函数不能修改;
out表示该变量的值不能传入函数,但是在函数返回时修改;
inout表示变量按照引用传入函数,如果该值修改,它将在函数退出后变化。
默认为in,例如
vec4 myFunc(inuot float myFloat,
out vec4 myVec4,
mat4 myMat4);//in parameter(default)
另外,函数不支持递归。
7)uniform变量在全局作用域中可见,所以在顶点着色器和片段着色器中是共享的,因此顶点和片段中的声明必须一致。
8)attribute一般用于每个顶点不相同的两,例如顶点位置,颜色等。
而uniform用于对同一组顶点组成的单个3D物体中所有顶点都相同的量,例如当前光源位置。
9)精度限定符可指定着色器变量计算精度,可以声明为低、中、高精度(lowp,mediump,highp)。
在较低精度上,着色器运行可能更快或者电源效率更高。
例如highp vec4 position;
precision highp float;
precision mediump int;
10)invariant关键字来规定用于计算输出的相同计算的值必须相同,例如
invariant gl_Position;
invariant texCoord;
#pragma STDGL invariant(all)
编译器为保证不变形,可能限制它做的优化,所以可能导致性能下降。因此需只在必要时使用或者限制使用的范围。
2)矩阵以列优先顺序存储,也就是说矩阵可以看做是由几个列向量组成,例如;
mat3 myMat3 = mat3(1.0, 0.0, 0.0,//First column
0.0, 1.0, 0.0,//Second column
0.0, 1.0, 1.0//Third column
);
vec4 col0 = myMat4[0];
float m1_1 = myMat4[1][1];
3)支持const,结构体
4)支持数组,例如:
float a[4] = float[](1.0, 2.0, 3.0, 4.0);
float b[4] = float[4](1.0, 2.0, 3.0, 4.0);
vec2 c[2] = vec2[2](vec2(1.0), vec2(1.0));
5)向量加法,向量与矩阵乘法,矩阵与矩阵乘法满足线性代数特性;
向量与向量乘法不满足线性代数特性,只是各个分量单独相乘,类似卷积。
6)函数支持in/out/inout限定符,in表示参数按值传送,函数不能修改;
out表示该变量的值不能传入函数,但是在函数返回时修改;
inout表示变量按照引用传入函数,如果该值修改,它将在函数退出后变化。
默认为in,例如
vec4 myFunc(inuot float myFloat,
out vec4 myVec4,
mat4 myMat4);//in parameter(default)
另外,函数不支持递归。
7)uniform变量在全局作用域中可见,所以在顶点着色器和片段着色器中是共享的,因此顶点和片段中的声明必须一致。
8)attribute一般用于每个顶点不相同的两,例如顶点位置,颜色等。
而uniform用于对同一组顶点组成的单个3D物体中所有顶点都相同的量,例如当前光源位置。
9)精度限定符可指定着色器变量计算精度,可以声明为低、中、高精度(lowp,mediump,highp)。
在较低精度上,着色器运行可能更快或者电源效率更高。
例如highp vec4 position;
precision highp float;
precision mediump int;
10)invariant关键字来规定用于计算输出的相同计算的值必须相同,例如
invariant gl_Position;
invariant texCoord;
#pragma STDGL invariant(all)
编译器为保证不变形,可能限制它做的优化,所以可能导致性能下降。因此需只在必要时使用或者限制使用的范围。
相关文章推荐
- OpenGL ES中的顶点数组、顶点属性、缓冲区对象
- OpenGL ES中的顶点数组、顶点属性、缓冲区对象
- opengl es3.0学习篇四:顶点属性,顶点数组和缓冲区对象
- OpenGL ES 学习教程(五) 极速绘制,使用 VBO (顶点缓冲区对象)!
- opengl学习笔记——顶点数组对象
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
- Linux Unix Shell 编程指南(学习笔记1)
- OpenGL学习笔记:顶点数组
- javascript 学习笔记(7)----window 对象的4个属性
- C++学习笔记 数组对象
- C++-C编程指南 学习笔记
- 学习笔记:GNU Linux编程指南(第二版):一
- 学习笔记:GNU Linux编程指南(第二版):一
- C#笔记三:类-对象-结构-方法-函数-属性-数组等整理
- Java面对对象编程---学习笔记(JAVA语言基础)
- Silverlight学习笔记:“依赖对象”和“依赖属性”
- pthread学习笔记(三)--跋涉之旅之Posix线程编程指南(1)
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)