blob: 2eb2b212427c2303e4f632accc5a6f48db796c71 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_UI_SCENIC_LIB_GFX_RESOURCES_STEREO_CAMERA_H_
#define SRC_UI_SCENIC_LIB_GFX_RESOURCES_STEREO_CAMERA_H_
#include "src/ui/scenic/lib/gfx/resources/camera.h"
namespace scenic_impl {
namespace gfx {
class StereoCamera final : public Camera {
public:
static const ResourceTypeInfo kTypeInfo;
StereoCamera(Session* session, SessionId session_id, ResourceId id, ScenePtr scene);
void SetStereoProjection(const glm::mat4 left_projection, const glm::mat4 right_projection);
enum Eye {
LEFT = 0,
RIGHT = 1,
};
escher::Camera GetEscherCamera(Eye eye) const;
private:
ScenePtr scene_;
// Projection Matrices for each eye, left at position 0, right at position 1.
glm::mat4 projection_[2];
escher::Camera::Viewport viewports_[2];
};
using StereoCameraPtr = fxl::RefPtr<StereoCamera>;
} // namespace gfx
} // namespace scenic_impl
#endif // SRC_UI_SCENIC_LIB_GFX_RESOURCES_STEREO_CAMERA_H_