Metal 着色语言编程指南 二

来源:互联网 发布:北京装修多少钱 知乎 编辑:程序博客网 时间:2024/05/21 01:44
Metal and C++11
   Metal Shading 语言是基于C++11的标准[http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf]设计的, 在这个基础之上增加了一些扩展和限制.  这些具体可以参考详细的语法描述.  本文会简单介绍Metal对C++11所做的一些修改和限制. 
   
   重载(Overloading)
   Metal Shading 语言支持C++11 section 13中所定义的重载, 除此之外, 还可以支持函数参数地址空间限定描述符(qualifier)的重载.  但是Graphic 和 Kernel函数不允许被重载。 (关于Qualifier 和 Graphics, Kernel函数等, 请参看Function Qualifiers 章节,会在以后译出)
   
   模板(Templates)
   Metal Shading 语言可以支持C++11 Section 14 所定义的模板语法。 
   
   预处理指令 (Preprocessor Directives)
   Metal Shading 语言可以支持 C++11 Section16 所定义的预处理指令的语法。 
   
   限制
   下面的C++11的特性不被Metal Shading 语言所支持:
    Lambda 表达式
    函数的递归调用
    dynamic_cast 操作
    类型推断 (type identification)
    new 和 delete 操作
    noexpect 操作 
    goto 语法
    register, thread_local 存储修饰符
    虚函数
    类继承 
    异常捕获和处理 
    不能使用C++标准库, Metal Shading 会提供Metal所特有的标准库。 
    
    另外, Metal Shading 语言对指针的使用也有严格限制, Graphics 和 Kernel函数中的指针参数必须使用 device, threadgoupd, 或者 constant 等地址空间修饰符, 函数指针在Metal Shading 中是不支持的。  
    Metal 函数不能声明为main.  
    
    Metal Pixel Coordinate System 

    在Metal 中, 纹理或者Framebuffer 像素坐标系是基于左上角的 (top-left corner)


本文译自:  https://developer.apple.com/library/ios/documentation/Metal/Reference/MetalShadingLanguageGuide/cplusplus/cplusplus.html#//apple_ref/doc/uid/TP40014364-CH8-SW1

3 0
原创粉丝点击