void WindowController3d::RenderScene()

in body-tracking-samples/sample_helper_libs/window_controller_3d/WindowController3d.cpp [253:313]


void WindowController3d::RenderScene(ViewControl& viewControl, Viewport viewport)
{
    // Assign viewport to viewControl.
    viewControl.SetViewport(viewport);

    // Change view port
    glViewport(viewport.x, viewport.y, viewport.width, viewport.height);

    // Update view/projection matrix
    linmath::mat4x4 projection;
    linmath::mat4x4 view;

    viewControl.GetPerspectiveMatrix(projection);
    viewControl.GetViewMatrix(view);

    UpdateRenderersViewProjection(view, projection);

    if (m_enableFloorRendering)
    {
        m_floorRenderer.Render();
    }

    if (m_skeletonRenderMode == SkeletonRenderMode::SkeletonOverlayWithJointFrame)
    {
        m_skeletonRenderer.EnableJointCoordinateAxes(true);
        m_skeletonRenderer.EnableSkeletons(true);
    }
    else
    {
        m_skeletonRenderer.EnableJointCoordinateAxes(false);
        m_skeletonRenderer.EnableSkeletons(true);
    }

    if (m_skeletonRenderMode == SkeletonRenderMode::SkeletonOverlay ||
        m_skeletonRenderMode == SkeletonRenderMode::SkeletonOverlayWithJointFrame)
    {
        m_pointCloudRenderer.Render(viewport.width, viewport.height);

        glClear(GL_DEPTH_BUFFER_BIT);
        m_skeletonRenderer.Render();
    }
    else
    {
        m_skeletonRenderer.Render();
        m_pointCloudRenderer.Render(viewport.width, viewport.height);
    }

    // Render Camera Pivot Point when interacting with the view control.

    const bool ctrl = glfwGetKey(m_window, GLFW_KEY_LEFT_CONTROL);
    if (m_cameraPivotPointRenderCount > 0 || m_mouseButtonLeftPressed || m_mouseButtonRightPressed || ctrl)
    {
        m_cameraPivotPointRenderCount = std::max(0, m_cameraPivotPointRenderCount - 1);

        vec3 targetPos;
        m_viewControl.GetTargetPosition(targetPos);
        // Render Camera Pivot Point the shape of a joint, but red.
        vec4 red = { 1.0f, 0.0f, 0.0f, 1.0f };
        m_skeletonRenderer.RenderJoint(targetPos, red);
    }
}