您的位置:首页 > 运维架构

openGL ES 2.0 笔记 3

2011-04-17 23:42 218 查看

结构

和c语言一样,有一点不同是在初始化是,不需要加struck关键字,C语言必须加,访问时,用"."操作符举例如下:

struct fogStruct
{
vec4 color;
float start;
float end;
} fogVar;
fogVar = fogStruct(vec4(0.0, 1.0, 0.0, 0.0), // color
0.5, // start
2.0); // end


vec4 color = fogVar.color;
float start = fogVar.start;
float end = fogVar.end;


数组

和C基本一样,有两点区别

数组下标不能是在编译时,仍不确定数值的变量,uniform变量除外,因为uniform变量是只读的,不会在程序中修改。这点类似于访问向量的元素

数组声明时,不能直接初始化,因为不支持这种初始化方式,只能一个一个元素初始化

运算符

只支持算术,逻辑,比较运算,其它如位运算,移位运算,均不支持。*运算支持类似C++里的多态,允许两边的操作数为float, vector,matrix中任何一个,举例如下:

float myFloat;
vec4 myVec4;
mat4 myMat4;
myVec4 = myVec4 * myFloat; // Multiplies each component of myVec4
// by a scalar myFloat
myVec4 = myVec4 * myVec4; // Multiplies each component of myVec4
// together (e.g., myVec4 ^ 2 )
myVec4 = myMat4 * myVec4; // Does a matrix * vector multiply of
// myMat4 * myVec4
myMat4 = myMat4 * myMat4; // Does a matrix * matrix multiply of
// myMat4 * myMat4
myMat4 = myMat4 * myFloat; // Multiplies each matrix component by
// the scalar myFloat


注意:算术运算不支持bool型,比较运算只支持标量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: