NDEVR
API Documentation
GLESGraphicsWindow.h
1#pragma once
2#include "../Headers/GLESGraphicsPipeline.h"
3#include "../Headers/GLESGraphicsDevice.h"
4#include <NDEVR/QTGraphicsWindow.h>
5#include <NDEVR/VirtualCameraView.h>
6#include <NDEVR/GraphicsPipeline.h>
7#include <NDEVR/GraphicsSession.h>
8#include <NDEVR/GraphicsUpdateArguments.h>
9#include <NDEVR/ViewportFactory.h>
10#include <NDEVR/Buffer.h>
11#include <QOpenGLShaderProgram>
12#include <QOpenGLTexture>
13#include <QOpenGLBuffer>
14#include <QOpenGLVertexArrayObject>
15#include <QOpenGLFunctions>
16namespace NDEVR
17{
23 {
24 public:
28 explicit GLESGraphicsWindow(QWindow* parent, Qt::WindowFlags flags);
33 void* getSurface() override;
36 void finishFrame(GraphicsUpdateArguments& args) final override;
38 void updateInstance() override {};
40 virtual void makeCurrent() override;
43 void exposeEvent(QExposeEvent*) override;
47 bool event(QEvent* event) override;
48 public:
50 void initialize() override;
54 };
55
60 {
61 public:
67 virtual VirtualCameraView* createView(const DynamicPointer<Camera>& camera, DesignObjectLookup* model_manager, QWidget* parent = nullptr) override
68 {
69 QTModelManager* qt_model_manager = dynamic_cast<QTModelManager*>(model_manager);
70 if (qt_model_manager == nullptr)
71 return nullptr;
73 //window->setModelManager(model_manager, auto_add_models);
74 //window->setCamera(camera->uuid());
75 QTGraphicsWidget* widget = new QTGraphicsWidget(window, parent);
76 VirtualCameraView* view = new VirtualCameraView(widget, parent);
77 view->setModelManager(qt_model_manager);
78 view->setCamera(camera);
79 return view;
80 }
81
86 virtual bool canCreateView(const DynamicPointer<Camera>& camera, DesignObjectLookup* model_manager, bool ignore_active) override
87 {
88 QTModelManager* qt_model_manager = dynamic_cast<QTModelManager*>(model_manager);
89 if (qt_model_manager == nullptr)
90 return false;
91 if (camera->get<NDPO::file>().size() > 0)
92 return false;
93 if (!GLESGraphicsSession::DefaultSession()->isActive())
94 {
95 if (ignore_active)
96 {
97 QTModelManager* q_manager = dynamic_cast<QTModelManager*>(model_manager);
98 lib_assert(q_manager != nullptr, "Bad manager for graphics engine");
99 if(q_manager == nullptr)
100 return false;
101 GLESGraphicsSession::DefaultSession()->setActive(true);
103 }
104 else
105 {
106 return false;
107 }
108 }
109 return true;
110 }
111
112 virtual void resetToDefaults() override
113 {
114 }
115 };
116}
A core class where all Design Objects including models, materials, and geometries are stored.
Provides a modifiable pointer that has shared ownership of a dynamically allocated object.
Definition Pointer.hpp:356
Allows the software to generate OpenGL windows when requested that are rendered with OpenGL.
virtual bool canCreateView(const DynamicPointer< Camera > &camera, DesignObjectLookup *model_manager, bool ignore_active) override
Checks whether a view can be created for the given camera.
virtual void resetToDefaults() override
Resets the factory to default settings.
virtual VirtualCameraView * createView(const DynamicPointer< Camera > &camera, DesignObjectLookup *model_manager, QWidget *parent=nullptr) override
Creates a new OpenGL-rendered camera viewport.
static const DynamicPointer< GraphicsSession > & DefaultSession()
Returns the default singleton graphics session.
The core Window used to render a viewport with OpenGL.
void exposeEvent(QExposeEvent *) override
Handles window expose events to trigger repaints.
bool event(QEvent *event) override
Handles general window events.
void paintGL(GraphicsUpdateArguments &args)
Performs the OpenGL paint pass for the current frame.
void * getSurface() override
Returns the rendering surface for this window.
virtual void makeCurrent() override
Makes the OpenGL context current for this window.
void updateInstance() override
No-op instance update for the GLES window.
void initialize() override
Initializes the OpenGL context and device for this window.
GLESGraphicsWindow(QWindow *parent, Qt::WindowFlags flags)
Constructs a GLESGraphicsWindow.
void finishFrame(GraphicsUpdateArguments &args) final override
Completes the current frame by swapping buffers.
~GLESGraphicsWindow()
Destroys the window and releases OpenGL resources.
virtual void updateActive(const DynamicPointer< GraphicsSession > &session, bool add_cameras=true)=0
Updates the active state of a graphics session.
Options that are used for performing an update on a Graphics Engine call.
A Widget wrapper around a QTGraphicsWindow that allows it to be used inside the UI framework.
QTGraphicsWindow(const DynamicPointer< GraphicsDevice > &device, QWindow *parent, Qt::WindowFlags flags)
Constructs the graphics window.
A wrapper around DesignObjectLookup that provides signal and slot functionality and adds rendering ca...
GraphicsManagerBase * graphicsManager()
Retrieves the graphics manager used for rendering.
A service which can generate Viewports based on Camera data.
A Viewport for rendering 3D objects in the scene with the NDEVR Graphics Engine.
void setModelManager(QTModelManager *manager)
Sets the model manager.
void setCamera(const DynamicPointer< Camera > &camera)
Sets the camera for this view.
static Qt::WindowFlags windowFlags()
Returns the platform-specific window flags for the embedded window.
The primary namespace for the NDEVR SDK.
@ file
The source file path associated with this object.