文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此作为对自己读书的勉励。笔者用粗体、斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!
5.5 类型转换
Cg 中的类型转换和 C 语言中的类型转换很类似。C 语言中类型转换可以是强制类型转换,也可以是隐式转换,如果是后者,则数据类型从低精度向高精度转换。在 Cg 语言中也是如此。例如:
代码语言:javascript复制float a = 1.0;
half b = 2.0;
float c = a b; //等价于 float c = a (float)b;
当有类型变量和无类型常量数据进行运算时,该常量数据不做类型转换,举例如下:
代码语言:javascript复制float a = 1.0;
float b = a 2.0; //2.0 为无类型常量数据,编译时作为 float 类型
Cg 语言中对于常量数据可以加上类型后,表示该数据的类型,例如:
代码语言:javascript复制float a = 1.0;
float b = a 2.0h; //2.0h 为 half 类型常量数据,运算是需要做类型转换
常量的类型后(type suffix)有 3 种:
- f :表示 float;
- h: 表示 half;
- x: 表示 fixed