文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此作为对自己读书的勉励。笔者用粗体、斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!
第 6 章 CG 表达式与控制语句
在上一章中,我们已经介绍了Cg语言的基础数据类型(7种)、内置数据类型,以及数组、结构、接口等类型,本章将在此基础上讨论Cg中的表达式,表达式由操作符(operator)关联一个或多个操作数(operand)构成,我们首先阐述各种类型的操作符,并结合数据类型讲解操作符的具体使用方法。
Cg中的操作符与C语言中的类似(操作符的功能和写法与C相同,但用法不尽相同),按照操作符的功能可以划分为:关系操作符、逻辑操作符、条件操作符。Cg中有一类较为独特的操作符,称为Swizzle操作符,这个操作符用于取出向量类型变量中的分量。此外,与C语言不同的是,Cg允许在向量类型变量上使用操作符,例如>
操作符可以用来比较两个向量各个分量的大小关系。Cg中的表达式还有很多与C语言不同的细节之处,将在本章中一一分说。
6.1 关系操作符(Comparison Operators)
关系操作符,用于比较同类型数据(不同类型的基础数据需要进行类型转换,不同长度的向量,不能进行比较)之间的大小关系或者等价关系。 Cg中有6种关系操作符,如表 1 所示, 关系操作符运算后的返回类型均为bool类型。
- 表 1 关系操作符
关系操作符 | 功能 | 用法 |
---|---|---|
< | 小于 | expr < expr |
<= | 小于或等于 | expr <= expr |
!= | 不等于 | expr != expr |
== | 等于 | expr == expr |
>= | 大于或等于 | expr >= expr |
> | 大于 | expr > expr |
在Cg中,由于关系操作符以及下节会讲到的逻辑操作符,都返回bool类型结果,所以这两种操作符有时也被统一称为boolean operator。
Cg语言表达式允许对向量使用所有的boolean operator,如果是二元操作符,则被操作的两个向量的长度必须一致。表达式中向量的每个分量都进行一对一的运算,后返回的结果是一个bool类型的向量,长度和操作数向量一致。例如:
float3 a = float4(0.5, 0.0, 1.0);
float3 b = float4(0.6, -0.1, 0.9);
bool3 c = a < b;
运算后向量c的结果为:
float3(true, false, true)
网友评论