Преобразование float3 [] из GLSL в металл

Как конвертировать это:

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))
);

в Metal(или C ++)? С кодом выше я получил несколько ошибок:

Глобальная переменная должна иметь постоянный спецификатор адресного пространства.

-1

Решение

В металле вы должны квалифицировать массив как находящийся в constant адресное пространство в дополнение к квалификации его как const, Я бы написал это как:

constant const float3 GDFVectors[] = {
normalize(float3(1, 0, 0)),
// ...
normalize(float3(-PHI, 1, 0))
};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]