CG学习记录(一)数据类型
一、基本数据类型
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学习记录(一)数据类型
-
1024初步学习。第一次点亮了led灯,记录下我的详细步骤。
-
Python第八课-另一种数据类型:字典 dictionary 博客分类: Python学习笔记-HeadFirstPython python字典
-
关于静态链接,动态链接,共享库,ABI的一些记录(os学习)
-
Javascript学习笔记一 之 数据类型_基础知识
-
Redis学习笔记(一)— 基本命令和数据类型
-
Yii2的相关学习记录,下载Yii2(一),记录yii2_PHP教程
-
Redis学习笔记(一):Redis的数据类型
-
第一次记录Bootstrap table学习笔记(1)
-
学习TypeScript,笔记一:TypeScript的简介与数据类型