Add option to reconfigure ar session

This commit is contained in:
Georg Hagen
2025-02-24 15:23:19 +01:00
parent e2ff63dcde
commit 6cc778021f
3 changed files with 35 additions and 15 deletions

View File

@@ -158,6 +158,10 @@ namespace OpenVulkano::AR
virtual ~ArSession() = default;
virtual void Configure(const ArSessionConfig& config) {}
virtual void Restart() { Stop(); Start(); }
/**
* Starts the AR session.
*/

View File

@@ -26,6 +26,10 @@ namespace OpenVulkano::AR::ArKit
~ArSessionArKitInternal() override;
void Configure(const ArSessionConfig& config) override;
void Restart() override;
void Start() override;
void Stop() override;

View File

@@ -79,6 +79,26 @@ namespace OpenVulkano::AR::ArKit
: m_frameId(0)
{
m_arKitDelegate = [[ArKitDelegate alloc] initWithFrameHandler:this];
Configure(config);
m_arSession = [ARSession new];
m_arSession.delegate = m_arKitDelegate;
running = false;
}
ArSessionArKitInternal::~ArSessionArKitInternal()
{
Stop();
[m_arSession release];
[m_arConfig release];
[m_arKitDelegate release];
Logger::AR->info("Released AR session");
}
void ArSessionArKitInternal::Configure(const ArSessionConfig& config)
{
if (config.useFrontCamera)
{
#ifdef OPENVULKANO_ENABLE_ARKIT_TRUEDEPTH
@@ -119,20 +139,6 @@ namespace OpenVulkano::AR::ArKit
metadata.imageResolution = { m_arConfig.videoFormat.imageResolution.width, m_arConfig.videoFormat.imageResolution.height };
metadata.frameRate = m_arConfig.videoFormat.framesPerSecond;
}
m_arSession = [ARSession new];
m_arSession.delegate = m_arKitDelegate;
running = false;
}
ArSessionArKitInternal::~ArSessionArKitInternal()
{
Stop();
[m_arSession release];
[m_arConfig release];
[m_arKitDelegate release];
Logger::AR->info("Released AR session");
}
void ArSessionArKitInternal::SetRenderer(IRenderer* renderer)
@@ -180,6 +186,12 @@ namespace OpenVulkano::AR::ArKit
running = false;
}
void ArSessionArKitInternal::Restart()
{
[m_arSession pause];
[m_arSession runWithConfiguration:m_arConfig];
}
void ArSessionArKitInternal::Pause()
{
ArSession::Pause();