Существует библиотека Metal wrapper для C ++, https://github.com/naleksiev/mtlpp (лицензия MIT). У меня пока нет личного опыта, поэтому я не могу рекомендовать как таковой, но код выглядит достаточно простым, поэтому, если вы столкнулись с какими-либо проблемами или ограничениями, вы могли бы их исправить. или расширите его без особых проблем.
Есть пример, который также создает окно, поэтому, по крайней мере, основы этого покрыты: https://github.com/naleksiev/mtlpp/blob/master/examples/04_window.cpp
Как @warrenm Как отмечалось в комментариях, ключ к созданию «клея» между Objective- C и C ++ состоит в том, чтобы поддерживать заголовки «чистыми», не имея каких-либо ключевых слов или типов Objective- C (кроме тех, которые определены в runtime headers) в них.