1 #ifndef GRAPHICSDOMAIN_H
2 #define GRAPHICSDOMAIN_H
11 #include "al/app/al_ComputationDomain.hpp"
12 #include "al/app/al_FPS.hpp"
13 #include "al/graphics/al_Graphics.hpp"
14 #include "al/io/al_ControlNav.hpp"
15 #include "al/io/al_Window.hpp"
19 class GLFWOpenGLWindowDomain;
23 bool cursorVisible =
true;
26 bool fullScreen =
false;
27 std::string title =
"Alloapp";
29 bool decorated =
true;
48 void quit() { mShouldQuitApp =
true; }
49 bool shouldQuit() {
return mShouldQuitApp || mSubDomainList.size() == 0; }
51 bool running() {
return mRunning; }
60 std::shared_ptr<GLFWOpenGLWindowDomain>
newWindow();
62 void closeWindow(std::shared_ptr<GLFWOpenGLWindowDomain> windowDomain);
67 std::function<void(
void)> onCreate = []() {};
68 std::function<void()> onExit = []() {};
71 virtual void preOnCreate() {}
73 virtual void postOnExit() {}
76 std::atomic<bool> mShouldQuitApp{
false};
103 mNav.
smooth(std::pow(0.0001, mTimeDrift));
104 mNav.
step(mTimeDrift * mParent->fps());
112 mGraphics->framebuffer(FBO::DEFAULT);
113 mGraphics->viewport(0, 0, mWindow->fbWidth(), mWindow->fbHeight());
114 mGraphics->resetMatrixStack();
115 mGraphics->camera(mView);
116 mGraphics->color(1, 1, 1);
131 const Viewpoint &view()
const {
return mView; }
133 Nav &nav() {
return mNav; }
135 const Nav &nav()
const {
return mNav; }
137 NavInputControl &navControl() {
return mNavControl; }
139 Window &window() {
return *mWindow; }
141 Graphics &graphics() {
return *mGraphics; }
144 std::unique_ptr<Window> mWindow;
146 std::unique_ptr<Graphics> mGraphics;
148 OpenGLGraphicsDomain *mParent;
151 Viewpoint mView{mNav.transformed()};
152 NavInputControl mNavControl{mNav};
Domain for a GLFW window.
std::function< void()> preOnDraw
bool cleanup(ComputationDomain *parent=nullptr) override
cleanup
std::function< void(Graphics &)> onDraw
bool init(ComputationDomain *parent=nullptr) override
initialize
bool tick() override
Execute a pass of the domain.
std::function< void()> onNewFrame
std::function< void()> postOnDraw
Interface for loading fonts and rendering text.
void step(double dt=1)
Accumulate pose based on velocity.
double smooth() const
Get smoothing amount.
OpenGLGraphicsDomain class.
bool start() override
start the asyncrhonous execution of the domain
bool init(ComputationDomain *parent=nullptr) override
initialize
bool cleanup(ComputationDomain *parent=nullptr) override
cleanup
bool stop() override
stop the asyncrhonous execution of the domain
std::shared_ptr< GLFWOpenGLWindowDomain > newWindow()
Create a new window.
Viewpoint within a scene.
DisplayMode
Window display mode bit flags.