1.30-cg

cg的类型转换是强制类型转换,也可以是隐式转换,如果是隐式转换的话只可以从低精度转换到高精度,

比如:

float a = 1.0;

half b = 2.0;

float c = a+b;

//float c = a + (float)b;

flaot d = a +2.0;

//编译时 2.0 做float类型;

swizzle 操作符: 用于去除向量变量类型中的分量;

swizzle操作符后的x y z w分别表示向量的第一个 第二个 第三个 第四个元素;

所有流程控制语句的返回值都必须是bool型,不可以是0或者1;

vs_2_x,vp30,vp40中profile支持for和while;

禁止是用递归,保留case switch关键字;

uniform类似const;

uniform修饰表示该值通过外部程序传入,并且不随着图元信息的改变而发生变化。

in修饰一个形参用于输入,进入函数体时候被初始化,且形参不会改变实参;

out修饰一个形参只是用于输出,进入函数体的时候没有被初始化,

inout修饰一个形参即用于输入,也用于输出,这是典型的引用传值。

参数没有修饰的时候默认使用in;

通常我们在程序中涉及到的顶点,法线等都是三元向量,为什么要用四元呢?

x,y,z,0 代表是一个空间向量  x,y,z,1 则代表是一个空间点

而且可以将平移 缩放 旋转等运算统一到四阶矩阵的乘法中。

因为cg语言中不存在指针机制,所以,数组作为函数的形参,传递的是数组的完整拷贝。

而且数组可以是一维的,也可以是多维的,而且不必声明数组的长度。

 

posted @ 2013-01-31 16:32  凌霄神采奕奕  阅读(255)  评论(0编辑  收藏  举报