Мы переносим игру на SpriteKit, и у меня возникла небольшая проблема. К некоторым объектам в нашей игре прикреплены треугольные дорожки. Буферы вершин трасс постоянно обновляются по мере того, как объекты перемещаются в мире, чтобы создать цельный и плавный эффект (существуют ограничения на количество вершин в буфере и на то, как часто мы испускаем новые вершины).
В предыдущей реализации мы просто обновляли затронутые вершины в соответствующем буфере всякий раз, когда испускали новые вершины. В SceneKit кажется, что я не могу обновить источники геометрии, если я не использую geometrySourceWithBuffer:vertexFormat:semantic:vertexCount:dataOffset:dataStride:
. Однако для этого мне нужно устройство Metal, очередь команд и кодировщик, чтобы иметь возможность отправлять команды для обновления моего буфера до его рендеринга.
Могу ли я сделать это с помощью обычного SCNView
, или мне нужно делать все вручную с помощью CAMetalLayer
, создавая собственное металлическое устройство и т. д.?
В сущности, все, что нам нужно, за исключением этой геометрии тропы, доступно в SpriteKit, поэтому я надеялся, что есть какой-то способ получить металлическое устройство и очередь команд, используемые SKView, и просто использовать что загрузить мою геометрию. Это сделало бы вещи намного проще.