blob: c3e66e014f2684c01b2007cf6ef9b9615776757d [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 GARNET_LIB_UI_GFX_RESOURCES_STEREO_CAMERA_H_
#define GARNET_LIB_UI_GFX_RESOURCES_STEREO_CAMERA_H_
#include "garnet/lib/ui/gfx/resources/camera.h"
namespace scenic_impl {
namespace gfx {
class StereoCamera final : public Camera {
public:
static const ResourceTypeInfo kTypeInfo;
StereoCamera(Session* session, 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 // GARNET_LIB_UI_GFX_RESOURCES_STEREO_CAMERA_H_