C++ 将float3[]从GLSL转换为金属
如何将其转换为:C++ 将float3[]从GLSL转换为金属,c++,glsl,metal,C++,Glsl,Metal,如何将其转换为: const float3 GDFVectors[19] = float3[]( normalize(float3(1, 0, 0)), normalize(float3(0, 1, 0)), normalize(float3(0, 0, 1)),
const float3 GDFVectors[19] = float3[](
normalize(float3(1, 0, 0)),
normalize(float3(0, 1, 0)),
normalize(float3(0, 0, 1)),
normalize(float3(1, 1, 1 )),
normalize(float3(-1, 1, 1)),
normalize(float3(1, -1, 1)),
normalize(float3(1, 1, -1)),
normalize(float3(0, 1, PHI+1)),
normalize(float3(0, -1, PHI+1)),
normalize(float3(PHI+1, 0, 1)),
normalize(float3(-PHI-1, 0, 1)),
normalize(float3(1, PHI+1, 0)),
normalize(float3(-1, PHI+1, 0)),
normalize(float3(0, PHI, 1)),
normalize(float3(0, -PHI, 1)),
normalize(float3(1, 0, PHI)),
normalize(float3(-1, 0, PHI)),
normalize(float3(PHI, 1, 0)),
normalize(float3(-PHI, 1, 0))
);
进入金属(或C++)?使用上面的代码,我得到了一些错误:
全局变量必须具有常量地址空间限定符
在Metal中,除了将数组限定为const
之外,还需要将其限定为常量
地址空间中的数组。我会这样写:
constant const float3 GDFVectors[] = {
normalize(float3(1, 0, 0)),
// ...
normalize(float3(-PHI, 1, 0))
};
哇,这个金属
真的让我很谦虚。为什么使用{…}
而不是[…]
?这不是一个数组吗?
?我在C++/Metal中只使用大括号进行聚合初始化。我不认识你在问题中使用的语法。