1 #ifndef INCLUDE_OMNIRENDER_HPP
2 #define INCLUDE_OMNIRENDER_HPP
6 #include "al/app/al_OpenGLGraphicsDomain.hpp"
7 #include "al/graphics/al_Graphics.hpp"
8 #include "al/sphere/al_PerProjection.hpp"
9 #include "al/sphere/al_SphereUtils.hpp"
29 std::function<void()> preOnDraw = [
this]() {
30 mGraphics->framebuffer(FBO::DEFAULT);
31 mGraphics->viewport(0, 0, mWindow->fbWidth(), mWindow->fbHeight());
32 mGraphics->resetMatrixStack();
33 mGraphics->camera(mView);
34 mGraphics->color(1, 1, 1);
37 virtual void onNewFrame() {
38 mNav.
smooth(std::pow(0.0001, mTimeDrift));
39 mNav.
step(mTimeDrift * mParent->fps());
42 std::function<void(Graphics &)> onDraw = [](Graphics &) {};
44 std::function<void()> postOnDraw = []() {};
46 Viewpoint &view() {
return mView; }
47 const Viewpoint &view()
const {
return mView; }
49 Nav &nav() {
return mNav; }
51 const Nav &nav()
const {
return mNav; }
53 NavInputControl &navControl() {
return mNavControl; }
55 Window &window() {
return *mWindow; }
57 Graphics &graphics() {
return *mGraphics; }
62 void toggleStereo() { stereo(!render_stereo); }
63 void omniResolution(
int res) { pp_render.update_resolution(res); }
64 int omniResolution() {
return pp_render.res_; }
67 void loopEyeForDesktopMode();
70 void setEyeToRenderForDesktopMode(
int eye);
73 void spanAllDesktop();
74 void loadPerProjectionConfiguration(
bool desktop =
true);
75 void drawUsingPerProjectionCapture();
78 PerProjectionRender pp_render;
79 bool render_stereo =
true;
80 bool running_in_sphere_renderer =
false;
81 bool window_is_stereo_buffered =
false;
82 int eye_to_render = -1;
90 std::unique_ptr<Window> mWindow;
92 std::unique_ptr<Graphics> mGraphics;
98 NavInputControl mNavControl{mNav};
GLFWOpenGLOmniRendererDomain class.
bool cleanup(ComputationDomain *parent=nullptr) override
cleanup
bool init(ComputationDomain *parent=nullptr) override
initialize
bool tick() override
Execute a pass of the domain.
bool drawOmni
Set this to false to render a regular view instead of omni.
Pose & transformed()
Get transformed pose.
void step(double dt=1)
Accumulate pose based on velocity.
double smooth() const
Get smoothing amount.
OpenGLGraphicsDomain class.
Viewpoint within a scene.