MTLBuffer поврежденные данные - PullRequest
0 голосов
/ 11 июля 2019

Я начал играть с металлическим API и включать его в свой рендерер как новый API. Однако у меня возникают проблемы с данными в моем MTLBuffer после создания и инициализации.

У меня есть некоторый API-независимый класс для буферов вершин и потоков, который я использую следующим образом:

// Fill vertex streams with data
    auto& positionStream = vb.GetDataStream<0>().AddData(
         // Quad 1
         Vec4{ -0.5f, -0.5f, -0.5f, 1.0f },
         Vec4{  x.xf, -0.5f, -0.5f, 1.0f },
         Vec4{  0.5f, -0.5f,  0.5f, 1.0f },
         Vec4{ -0.5f, -0.5f,  0.5f, 1.0f },

         // Quad 2
         Vec4{ -0.5f,  0.5f, -0.5f, 1.0f },
         Vec4{  0.5f,  0.5f, -0.5f, 1.0f },
         Vec4{  0.5f,  0.5f,  0.5f, 1.0f },
         Vec4{ -0.5f,  0.5f,  0.5f, 1.0f }
    );

Где Vec4 действительно более простая структура:

struct Vec4
{
    float x{ 0.0f };
    float y{ 0.0f };
    float z{ 0.0f };
    float w{ 0.0f };
};

Каждый поток данных буфера вершин поддерживается MTLBuffer. Однако когда я создаю и инициализирую этот поток с данными, элемент x, который я отметил в примере кода как x.x, содержит некоторое значение мусора. Если я устанавливаю это значение на что-либо, это всегда мусор. Я использую некоторые другие потоки для индексов, цветов, текстовых координат и все эти данные верны. Я создаю буферы с вызовом

[device newBufferWithBytes:data length:length options:0]

Вот что я вижу, когда снимаю кадр:

enter image description here Изменить: я также заметил, что это происходит при моем первом создании MTLBuffer, я пытался сначала создать MTLBuffer для данных о цвете, а затем для позиций и цветов были повреждены и позиции в порядке.

Есть идеи, что может вызвать это?

1 Ответ

0 голосов
/ 11 июля 2019

Наконец-то мне удалось найти проблему.Я на MacOS 10.15 Catalina Beta (19A501i), с XCode-Beta.Я пытался создать приложение в не-бета-версии XCode, и все кажется правильным, даже после проверки этих буферов в отладчике gpu.

До этого я использовал Xcode-beta (бета-версия 11.0 (11M336w))что кажется проблемой.

...