// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "appslogging.hpp" #include "common-config.hpp" #include "videostitchqopenglfunctions.hpp" #include <QElapsedTimer> #include <QGLShaderProgram> #include <QOpenGLBuffer> #include <QOpenGLTexture> #include <QOpenGLVertexArrayObject> #include <QMutex> #include <memory> class Texture; class VS_COMMON_EXPORT Renderer : public QObject, public VideoStitchQOpenGLFunctions { Q_OBJECT public: Renderer(); virtual ~Renderer(); // The context should be current to be able to delete Renderer::placeHolderTex virtual void initialize(); virtual void renderSphere(); virtual void renderSkybox(QGLShaderProgram &); signals: void logMessage(const QString &mess, VideoStitch::E_logLevel level); protected: void checkOpenglError(); QOpenGLTexture placeHolderTex; QOpenGLBuffer sphereVbo, skyboxVbo; QOpenGLVertexArrayObject sphereVao, skyboxVao; QGLShaderProgram sphereProgram, skyboxProgram, equiangularSkyboxProgram; private: QVector<GLfloat> buildSphereLines() const; QVector<GLfloat> buildCube(float side) const; };