美文网首页
Metal语法之函数修饰符

Metal语法之函数修饰符

作者: adaodao3056 | 来源:发表于2020-09-18 15:04 被阅读0次
//函数修饰符.
/*
 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
 */

相关文章

网友评论

      本文标题:Metal语法之函数修饰符

      本文链接:https://www.haomeiwen.com/subject/zbdjyktx.html