[Cg -C for graphic] CG数据类型

目录

1.基本数据类型

2.数组类型

3.结构类型struct

4.interfaces接口

5.类型的转换


1.基本数据类型

        1.float: 32位浮点数据,被所有profile支持

        2.half: 16位浮点数据

        3.int: 32位整型数据,有些profile将int作为float使用

        4.fixed: 12位定点数,被所有profile支持

        5.bool: 被所有profile支持

        6.sampler* : 纹理对象句柄,有sampler,sampler1D,sampler2D,sampler3D,samplerCUBE和samplerRECT(DirectX profile不支持)

        7.string: 不被profile支持,实际运用也少,可以通过Cg runtime API声明,赋值,保存Cg文件信息

        8.多元向量: 如float2,float4,bool4等,但不能超过四维

        9.矩阵: 如float1x1,float3x3等,不能超过4x4

注意: Cg 中向量、矩阵与数组是完全不同,向量和矩阵是内置的数据类型
(矩阵基于向量),而数组则是一种数据结构,不是内置数据类型!这一点和
C\C++ 中不太一样,在 C\C++ 中,这三者同属于数据结构,数组可以构建向量和
矩阵。

2.数组类型

        -在着色程序中,数组通常作为外部应用程序传入大量参数到Cg的顶点程序中的形参接口
        1.数组声明:
        如float a[10],  float4 b[2],  float c[2] = {1,4},  float d[2][3]
        2.数组长度: " .length "获取,如 a.length
        
数组和矩阵有些类似,但是并不是相同。 例如 4*4 阶数组的的声明方式为:
float M[4][4];4 阶矩阵的声明方式为: float4x4 M 。前者是一个数据结构,包含 16
float 类型数据,后者是一个 4 阶矩阵数据。 float4x4 M[4] ,表示一个数组,包
4 4 阶矩阵数据。
进行数组变量声明时,一定要指定数组长度,除非是作为函数参数而声明的
形参数组。

3.结构类型struct

        -例:
        struct myAdd
        {
                float val;
                float add(float x)
                {
                        return val+x;
                }
        };
        
        myAdd s;
        s.value = 1;
        -成员变量需要在成员函数前声明.
        -成员函数是否可以重载依赖于profile版本
        -通常Cg代码会在开头定义两个结构体,分别定义输入和输出,这两个结构体的定义还需要绑定语义类型,用来与宿主环境进行数据交换的作为识别.
        -常见语义: POSITION位置,COLOR颜色,NORMAL法向量,Texcoord纹理坐标等

4.interfaces接口

        -有提供,但还不完善,几乎不用

5.类型的转换

        -强制转换
        -隐式转换, 低精度转高精度
                如:
                float a = 1.0;
                half b =2.0;
                float c = a+b;//b会从half转到float
        -有类型变量与无类型常量运算,常量不做转换
                如:
                float a = 2.0;
                float b = a+ 2.0;//2.0编译时作为float
        -后缀
                如:2.0f,2.0h        
                -f: float
                -h: half
                -x: fixed

资料来源: <GPU编程与CG语言之阳春白雪下里巴人>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值