Skip to content

Commit

Permalink
Fix api change of vsg::FrameStamp::create()
Browse files Browse the repository at this point in the history
  • Loading branch information
rhabacker committed Mar 21, 2024
1 parent 20d5349 commit 340faa0
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
10 changes: 9 additions & 1 deletion vsgvr/include/vsgvr/app/Viewer.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,15 @@ namespace vsgvr {
/// **must** call releaseFrame() once after rendering, even if this method returns false.
///
/// @return Whether the application should render.
bool advanceToNextFrame();

#if VSG_VERSION_MAJOR >= 1 && VSG_VERSION_MINOR >= 1
/// hint for setting the FrameStamp::simulationTime to time since start_point()
static constexpr double UseTimeSinceStartPoint = std::numeric_limits<double>::max();

bool advanceToNextFrame(double simulationTime = UseTimeSinceStartPoint);
#else
bool advanceToNextFrame();
#endif
/// Submit rendering tasks to Vulkan
void recordAndSubmit();

Expand Down Expand Up @@ -167,6 +174,7 @@ namespace vsgvr {
XrFrameState _frameState;
vsg::ref_ptr<vsg::FrameStamp> _frameStamp;
std::vector<XrCompositionLayerBaseHeader*> _layers;
vsg::clock::time_point _start_time_point;
};
}

Expand Down
20 changes: 20 additions & 0 deletions vsgvr/src/vsgvr/app/Viewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,11 @@ namespace vsgvr
return PollEventsResult::RunningDontRender;
}

#if VSG_VERSION_MAJOR >= 1 && VSG_VERSION_MINOR >= 1
bool Viewer::advanceToNextFrame(double simulationTime)
#else
bool Viewer::advanceToNextFrame()
#endif
{
// Viewer::acquireNextFrame
_frameState = XrFrameState();
Expand All @@ -128,12 +132,28 @@ namespace vsgvr
if (!_frameStamp)
{
// first frame, initialize to frame count and indices to 0
#if VSG_VERSION_MAJOR >= 1 && VSG_VERSION_MINOR >= 1

_start_time_point = t;

if (simulationTime == UseTimeSinceStartPoint) simulationTime = 0.0;
_frameStamp = vsg::FrameStamp::create(t, 0, simulationTime);
#else
_frameStamp = vsg::FrameStamp::create(t, 0);
#endif
}
else
{
// after first frame so increment frame count and indices
#if VSG_VERSION_MAJOR >= 1 && VSG_VERSION_MINOR >= 1
if (simulationTime == UseTimeSinceStartPoint)
{
simulationTime = std::chrono::duration<double, std::chrono::seconds::period>(t - _start_time_point).count();
}
_frameStamp = vsg::FrameStamp::create(t, _frameStamp->frameCount + 1, simulationTime);
#else
_frameStamp = vsg::FrameStamp::create(t, _frameStamp->frameCount + 1);
#endif
}

for (auto& layer : compositionLayers)
Expand Down

0 comments on commit 340faa0

Please sign in to comment.