U3DC.COM | 优三帝研究院

Menu

Cg教程(三):向量,矩阵

向量
本质就是一组标量(压缩数组),Cg提供对向量数据类型的原生支持。这可以有效提高可编程图形处理对于压缩数组的处理能力。
使用非常量的数组索引来存取压缩数组将降低执行效率,或者根本不支持。这是由profile决定的。
比如:
float4 data = {0.5,-2,3,3.14159};//初始化一个四元数组
int  index = 3;
float scalar;
scalar = data[3];//效率高
scalar= data[index];//效率低,甚至不支持

矩阵

Cg同样支持矩阵类型,矩阵类型在Cg中也是压缩数组类型
实例:
float4x4  matrix1;//表示一个包含4乘以4共16个元素的矩阵;matrix1为矩阵的名称(标识符)
half3x2 matrix2;//表示6个元素的矩阵
fixed2x4 matrix3;//表示抗议容下8个元素的矩阵;
矩阵初始化与c或者c++的初始化数组的方式一致:
fixed2x4 matrix4 = { 1.0,2.0
                                3.0,4.0
                                 5.0,6.0 }

语义

一个冒号和一个特定词跟在结构成员后面,比如 :COLOR
语义作为一种粘合剂,将Cg程序和图形流水线的其他部分绑定在一起。
struct test1
{
    float4 density :POSITION
    float4 position :COLOR
}
这里,density和position的定义都使人困惑,但是,Cg程序依旧能通过它的语义来确定结构成员的实际属性,density将被光栅器作为一个位置信息,position将被作为颜色信息处理。
打赏
— 于 共写了701个字
— 文内使用到的标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据