Render through public Qt API: OpenGL and Vulkan backends, --graphics-api
Replace the QRhi rendering in OverlayController (private Qt API) with the render backends of the vrdashboard template (src/render/), which use public Qt API only (QQuickRenderTarget::fromOpenGLTexture / fromVulkanImage). The binary then runs on another Qt 6 patch release, e.g. the Steam Frame's system Qt. The Vulkan backend also does what SteamVR requires and the QRhi path lacked: the required instance/device extensions and the HMD's GPU (via openvr_init::renderInterop()), VK_FORMAT_R8G8B8A8_UNORM, and the transition to TRANSFER_SRC_OPTIMAL after each frame. - New option --graphics-api opengl|vulkan (default opengl, no fallback). - Shutdown() calls VR_Shutdown before the render target and Qt's device go (crash on the Steam Frame with Vulkan otherwise); it runs only once. - Mouse y is flipped on every platform: SteamVR reports it in GL convention. - Render delay 5 -> 16 ms (about 60 fps). - GuiPrivate is no longer needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
423ea57db7
commit
4826686a4d
+16
-5
@@ -58,6 +58,12 @@ CommandLineOptions returnCommandLineParser( const MyQApplication& application )
|
||||
k_resetSettingsDescription );
|
||||
parser.addOption( resetSettings );
|
||||
|
||||
QCommandLineOption graphicsApi( k_graphicsApi,
|
||||
k_graphicsApiDescription,
|
||||
k_graphicsApiValueName,
|
||||
k_graphicsApiDefault );
|
||||
parser.addOption( graphicsApi );
|
||||
|
||||
parser.process( application );
|
||||
|
||||
const bool desktopModeEnabled = parser.isSet( desktopMode );
|
||||
@@ -84,11 +90,16 @@ CommandLineOptions returnCommandLineParser( const MyQApplication& application )
|
||||
if ( resetSettingsEnabled )
|
||||
qInfo() << "Reset SteamVR Settings.";
|
||||
|
||||
const CommandLineOptions commandLineArgs{
|
||||
desktopModeEnabled, forceNoSoundEnabled,
|
||||
forceNoManifestEnabled, forceInstallManifestEnabled,
|
||||
forceRemoveManifestEnabled, resetSettingsEnabled
|
||||
};
|
||||
const QString graphicsApiValue = parser.value( graphicsApi );
|
||||
qInfo() << "Graphics API:" << graphicsApiValue;
|
||||
|
||||
const CommandLineOptions commandLineArgs{ desktopModeEnabled,
|
||||
forceNoSoundEnabled,
|
||||
forceNoManifestEnabled,
|
||||
forceInstallManifestEnabled,
|
||||
forceRemoveManifestEnabled,
|
||||
resetSettingsEnabled,
|
||||
graphicsApiValue };
|
||||
|
||||
qInfo() << "Command line arguments processed.";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user