本节开始详细的介绍Cg程序。
1.一个简单的顶点程序
struct Output{
float4 position : POSITION;
float4 color:COLOR;
};
Output green(float2 position:POSITION)
{
Output OUT;
OUT.position = float4(position,0,1);
OUT.color = float4(0,1,0,1);
return OUT;
}
输出结构
cg程序被限制只能输出一组值,cg程序的输出结构封装了输出值的潜在范围。结构的声明跟C++类似,除了每个成员还包括了一个语义项向量
内置向量数据类型,向量声明最多不能超过四元,初始化方式为:
float4 array = float4(1.0,2.0,3.0,4.0);矩阵
内置矩阵数据类型,最大的维数不能超过4*4阶,初始化方式为:
float2x3 matrix5 ={1.0,2.0,3.0,4.0,5.0,6.0};语义
语义词表示输入图元的数据含义(是位置信息,还是法向量信息),也表明这些图元数据存放的硬件资源(寄存器或纹理缓冲区)。是顶点程序和片段程序处理阶段之间的输入/输出数据和寄存器之间的桥梁,同时也表示数据的含义。
在cg语言中,通过语义绑定机制,指定数据存放的位置,实际上就是将输入/输出数据和寄存器做一个映射关系,根据输入语义,图形处理器从某个寄存器取数据&#x