欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CG学习记录(一)数据类型

程序员文章站 2024-03-16 20:50:10
...

一、基本数据类型

1.float 32位浮点数,一个符号位

2.half 16位浮点数

3.int 32位整型数据

4.fixed 12位定点数

5.bool 布尔值

6.sampler* 纹理对象句柄
包括sampler,sampler1D,sample2D,sample3D,sampleCUBE,samplerRECT

7.string字符串类型

二、向量与矩阵

1.向量
向量不能超过4元,可以声明float1、float2、float3、float4类型的数组变量,但声明float5则会报错

向量一般初始化为 float4 array = float4(1.0,2.0,3.0,4.0);

向量可以由低元向量构建 float2 x = float2(1.0,1.0);
float4 y = float4(a,1.0,1.0);

2.矩阵
矩阵的最大维数不能超过4*4阶

矩阵的一般初始化为 float2x3 matrix5 = {1.0,2.0,3.0,4.0,5.0,6.0};
上述表示2*3阶的矩阵,包含6个float类型数据

三、数组类型

在着色器程序中,通过数组将大量参数传入到CG的顶点程序中的形参接口。

数组的声明:
float a[10] #声明了一个包含10个float类型数据的数组
float4 b[10] #声明了一个包含10个float4类型向量数据的数组

数组的初始化:
float a[4] = {1.0,2.0,3.0,4.0}

获取数组长度:
float a[10];
int L = a.length

声明多维数组以及初始化的方式如下所示:
float b[2][3] = {{1.0,2.0,3.0},{1.0,2.0,3.0}}

获取多维度数组长度:
int L1 = b.length #L1为2
int L2 = b[0].length #L2为3

四、结构类型

声明结构体:

				struct first
				{
						float val1;
						float val2(float x)
								{
								return val1 + x;
								}
				};
				first s;

使用结构体中的成员和方法:
float a = s.val1;
float b = s.add(a);

五、接口类型

接口类型不完善,不要问,问就是看评论教我

六、类型转换

float a = 1.0;
half b = 2.0;
float c = a + b;//等价于 float c = a + (float)b;

float a = 1.0;
float b = a + 2.0 //2.0编译当作float类型计算

float a = 1.0;
float b = a + 2.0h; // 2.0h为half类型常量数据,运算需要做类型转换;x表示fixed

相关标签: CG语言