为什么在 C++ 顶点函数中有两个括号 [?
Why are there two brackets [ in the c++ vertex functions?
我正在观看 Apple 关于 Metal 和 MetalKit 的介绍视频。
着色器的示例代码有这些双括号,如 [[buffer(0)]]
参数。为什么有两个括号?是什么意思还是只是表示后面有关键字"buffer"?标准 c++ 中没有这样的构造,是吗?
vertex Vertex vertex_func(constant Vertex *vertices [[buffer(0)]],
constant Uniforms &uniforms [[buffer(1)]],
uint vid [[vertex_id]])
还有什么是 1 或 2 周的有趣项目作为 GP-GPU 的介绍?对于一个数学很好但没有艺术技能的新手来说是可以应付的。
使用此 [[ x ]] 声明在着色器和 CPU
之间传递的 att
我引用:
The [[ … ]] syntax is used to declare attributes such as resource
locations, shader inputs, and built-in variables that are passed back
and forth between shaders and CPU
这些称为属性,它们的语法和行为在 C++ 标准的第 7.6.1 节中定义,属性语法和语义.它们在语法中看起来像这样:
attribute-specifier:
[ [ attribute-list ] ]
alignment-specifier
Metal 着色语言定义了许多属性,允许您将各种语义与变量、struct
/class
成员和函数参数(包括参数 table 绑定,如您的问题)。
Metal Shading Language Specification在这方面遵照C++标准,所以C++标准确实是参考参考:
The Metal programming language is based on the C++14 Specification
(a.k.a., the ISO/IEC JTC1/SC22/ WG21 N4431 Language Specification)
with specific extensions and restrictions. Please refer to the C++14
Specification for a detailed description of the language grammar.
我正在观看 Apple 关于 Metal 和 MetalKit 的介绍视频。
着色器的示例代码有这些双括号,如 [[buffer(0)]]
参数。为什么有两个括号?是什么意思还是只是表示后面有关键字"buffer"?标准 c++ 中没有这样的构造,是吗?
vertex Vertex vertex_func(constant Vertex *vertices [[buffer(0)]],
constant Uniforms &uniforms [[buffer(1)]],
uint vid [[vertex_id]])
还有什么是 1 或 2 周的有趣项目作为 GP-GPU 的介绍?对于一个数学很好但没有艺术技能的新手来说是可以应付的。
使用此 [[ x ]] 声明在着色器和 CPU
之间传递的 att我引用:
The [[ … ]] syntax is used to declare attributes such as resource locations, shader inputs, and built-in variables that are passed back and forth between shaders and CPU
这些称为属性,它们的语法和行为在 C++ 标准的第 7.6.1 节中定义,属性语法和语义.它们在语法中看起来像这样:
attribute-specifier:
[ [ attribute-list ] ]
alignment-specifier
Metal 着色语言定义了许多属性,允许您将各种语义与变量、struct
/class
成员和函数参数(包括参数 table 绑定,如您的问题)。
Metal Shading Language Specification在这方面遵照C++标准,所以C++标准确实是参考参考:
The Metal programming language is based on the C++14 Specification (a.k.a., the ISO/IEC JTC1/SC22/ WG21 N4431 Language Specification) with specific extensions and restrictions. Please refer to the C++14 Specification for a detailed description of the language grammar.