用户定义类型

使用以下语法声明用户定义类型。

typedef [const] Type Name[Index];

参数

说明
[const]
可选。 此关键字 (keyword) 显式将类型标记为常量。
类型
标识数据类型;必须是 HLSL 内部数据类型之一。
名字
唯一标识变量名称的 ASCII 字符串。
指数
可选数组大小。 必须是介于 1 和 4(含 1 和 4)之间的无符号整数。

除了内置的内部数据类型外,HLSL 还支持遵循以下语法的用户定义或自定义类型:

备注

用户定义的类型不区分大小写。 为方便起见,以下类型在超全局范围内自动定义。

typedef vector <bool, #> bool#;
typedef vector <int, #> int#;
typedef vector <uint, #> uint#;
typedef vector <half, #> half#;
typedef vector <float, #> float#;
typedef vector <double, #> double#;

typedef matrix <bool, #, #> bool#x#;
typedef matrix <int, #, #> int#x#;
typedef matrix <uint, #, #> uint#x#;
typedef matrix <half, #, #> half#x#;
typedef matrix <float, #, #> float#x#;
typedef matrix <double, #, #> double#x#;

井号 (#) 表示介于 1 和 4 之间的整数。

为了与 DirectX 8 效果兼容,在超全局范围内自动定义以下类型:

typedef int DWORD;
typedef float FLOAT; 
typedef vector <float, 4> VECTOR;
typedef matrix <float, 4, 4> MATRIX;
typedef string STRING;
typedef texture TEXTURE;
typedef pixelshader PIXELSHADER;
typedef vertexshader VERTEXSHADER;

DirectX HLSL) (数据类型