//函数修饰符.
/*
3个函数修饰符:
1. kernel : 并行计算函数
2. vertex : 顶点函数
3. fragment : 片元函数
*/
//1.并行计算函数(kernel)
kernel void CCTestKernelFunctionA(int a,int b)
{
/*
注意:
1. 使用kernel 修饰的函数返回值必须是void 类型
2. 一个被函数修饰符修饰过的函数,不允许在调用其他的被函数修饰过的函数. 非法
3. 被函数修饰符修饰过的函数,只允许在客户端对齐进行操作. 不允许被普通的函数调用.
*/
//不可以的!
//一个被函数修饰符修饰过的函数,不允许在调用其他的被函数修饰过的函数. 非法
CCTestKernelFunctionB(1,2);//非法
CCTestVertexFunctionB(1,2);//非法
//可以! 你可以调用普通函数.而且在Metal 不仅仅只有这3种被修饰过的函数.普通函数也可以存在
CCTest();
}
kernel void CCTestKernelFunctionB(int a,int b)
{
}
//顶点函数
vertex int CCTestVertexFunctionB(int a,int b){
}
//片元函数
fragment int CCTestVertexFunctionB(int a,int b){
}
void CCTest()
{
}
//变量/函数参数地址空间修饰符
/*
1.device
2.threadgroup
3.constant
4.thread
*/
/*
注意:
1. 所有被(kernel,vertex,fragment)所修饰的参数变量,如果其类型是指针/引用 都必须带有地址空间修饰符.
2. 被fragment修饰的片元函数, 指针/引用必须被device/constant/threadgroup
*/
网友评论