Cg(二)

来源:互联网 发布:舒畅知乎 编辑:程序博客网 时间:2024/05/09 18:45

输出结构

C2E1v_green程序是从下面这个声明开始的

struct C2E1v_Output{    float4 position : POSITION;    float4 color: COLOR;};
这个声明是为了一个专用的结构,这个结构被称为输出结构。这个结构包含了一组值代表了一个给定的Cg程序的输出结果。Cg程序只能被限制只能输出一组值。对一个给定的Cg程序,Cg程序的输出结构封装了输出值的潜在范围。

Cg使用与C++一样的语法来声明结构体。一个结构体声明是以关键字struct开始的,紧跟着是结构体的名字。

Cg中的标识符

Cg中的标识符与C++中的标识符有相同的形式。一个标识符不能以数字开头,也不能是一个关键字。标识符不仅可以命名结构,也可以命名类型声明,结构的成员,变量,函数和语义。

Cg中的函数

入口函数:一个入口函数定义了一个顶点程序或片段程序,它类似于C++中的main函数。一个程序的执行从他的入口函数开始。在示例中入口函数是按如下方式定义的:

C2E1v_Output C2E1v_green(float2 position : POSITION)
这个函数返回的输出结构C2E1v_Output已经在前面描述。这意味着该函数同时输出一个位置和一个颜色。这个函数还接受一个命名为position的参数输入,该参数是float2型的,是一个二元浮点向量。当一个冒号和语义名跟随在一个输入参数名后的时候,这指明了和输入参数相关联的语义。当POSITION用作一个输入语义的时候,这就告诉顶点处理器用应用程序指定的函数将要处理的每个顶点的位置来初始化这个参数。
    内部函数:内部函数是帮助函数,由入口函数或者其他内部函数调用。当然可以使用Cg标准库提供的内部函数,也可以使用自己定义的内部函数。内部函数忽略任何应用于它们的输入或输出参数或者返回值上的语义。只有入口函数使用语义。
下面进入函数体中,OUT和position以及OUT和color之间的圆点是成员操作符。首先程序要把输入参数position赋值给OUT.position。但是,输出结构成员OUT.position是float4类型变量。其次程序要把代表绿色的RGBA颜色值赋值给OUT.color。

原创粉丝点击