Migrating Apps to Metal


For this approach I will be porting MinVR's demo.cpp file to Metal using MGL since MinVR is a cross-platform VR toolkit that should work with multiple graphics libraries via drag-n-drop plugins.
Since OpenGL is not supported on Macs made after 2018 so in order to test and compile MinVR, I must use a Windows or Linux machine with OpenGL installed.

I have chosen to use paperspace with a remote connection to a Windows machine. I will attempt to compile the MGL library and MinVR on a Windows machine. I will set the include directory to be MGL's mgl.h file and mgltypes.h. It is unclear whether I will be able to compile MGL on Windows, since it is an XCode project. 


Approach #1: MGL

The vision Pro uses Metal as its underlying graphics library. It exposes an API for Objective-C/C++/C development. Using Metal API will give you more fine-grained control over certain aspects of the graphics pipeline that are abstracted away by SwiftUI. For migrating existing OpenGL apps to Metal, one must make use of this API. 


Since MinVR is a device independent framework for developing VR apps, there is hope that MinVR apps can be migrated to AVP by registering AVP's device inputs and finding a way to migrate OpenGL dependencies to Metal (potentially by using MGL).

Remote Desktop

Another alternative is to use a remote desktop like software to stream Steam games from a Windows PC. This is the approach used for MinVR on Meta Quest, since it is MinVR for sure works on Windows.
Unfortunately Steam is not compatible with AVP yet, but maybe that will change in the future.
Additionally, some developers found a way to hack into the AVP so that it supports ALVR, which is a VR streaming standard, allowing it to unofficially stream SteamVR apps.