Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在金属着色语言中何时使用设备以及何时使用常量地址空间限定符?_Swift_3d_Metal - Fatal编程技术网

Swift 在金属着色语言中何时使用设备以及何时使用常量地址空间限定符?

Swift 在金属着色语言中何时使用设备以及何时使用常量地址空间限定符?,swift,3d,metal,Swift,3d,Metal,我知道在索引缓冲区时使用设备地址空间,而在函数的多次调用将访问缓冲区的同一部分时使用常量地址空间。但我还是不太清楚。谢谢大家! 基于此 设备地址空间 设备地址空间名称指的是缓冲区内存对象 从设备内存池中分配的可读和 可写的。缓冲区内存对象可以声明为指针或 对标量、向量或用户定义结构的引用。在应用程序中, Metal API调用为缓冲区对象分配内存,该对象 确定缓冲区内存的实际大小。例如: 因为您总是从设备地址分配纹理对象 空间中,纹理类型不需要“设备地址”属性 恒定地址空间 常量地址空间名称指的

我知道在索引缓冲区时使用设备地址空间,而在函数的多次调用将访问缓冲区的同一部分时使用常量地址空间。但我还是不太清楚。谢谢大家!

基于此

设备地址空间 设备地址空间名称指的是缓冲区内存对象 从设备内存池中分配的可读和 可写的。缓冲区内存对象可以声明为指针或 对标量、向量或用户定义结构的引用。在应用程序中, Metal API调用为缓冲区对象分配内存,该对象 确定缓冲区内存的实际大小。例如:

因为您总是从设备地址分配纹理对象 空间中,纹理类型不需要“设备地址”属性

恒定地址空间 常量地址空间名称指的是缓冲区内存对象 从设备内存池分配,但为只读。变量 程序作用域必须在常量地址空间中声明,并且 在声明语句期间初始化。初始值设定项 表达式必须是核心常量表达式。程序中的变量 作用域与程序具有相同的生存期,并且它们的值保持不变 在调用中的任何计算或图形函数之间 节目

constant float samples[]={1.0f、2.0f、3.0f、4.0f}

允许使用指向常量地址空间的指针或引用作为 函数的参数。写入常量中声明的变量 地址空间是一个编译时错误。声明这样一个变量 没有初始化也是编译时错误。决定 地址空间(设备或常量)传递给 图形或内核函数使用时,请查看缓冲区是如何访问的 在图形或内核函数中。常量地址空间为 针对执行图形或内核的多个实例进行了优化 函数访问缓冲区中的相同位置。一些例子 此访问模式正在访问的灯光或材质属性 照明/着色、用于蒙皮的矩阵阵列的矩阵、过滤器 从用于卷积的过滤器权重数组访问权重。如果 图形或内核函数的多个执行实例是 使用索引(如顶点ID、片段)访问缓冲区 坐标或网格中的线程位置,缓冲区必须 在设备地址空间中分配


非常感谢你,这是一个惊人的解释!
// An array of a float vector with four components.

device float4 *color;
struct Foo {
float a[3];
int b[2];
}
// An array of Foo elements.
device Foo *my_info;