2016-05-17 03:04:11 +12:00
|
|
|
#pragma once
|
|
|
|
|
2016-03-19 06:57:51 +13:00
|
|
|
#ifndef QTOFFLINEGL_H
|
|
|
|
#define QTOFFLINEGL_H
|
|
|
|
|
2016-04-15 17:42:51 +12:00
|
|
|
#include <memory>
|
|
|
|
|
2016-03-19 06:57:51 +13:00
|
|
|
#include <QtOpenGL>
|
|
|
|
#include <QGLFormat>
|
|
|
|
#include <QGLContext>
|
|
|
|
#include <QGLPixelBuffer>
|
2016-04-18 20:22:43 +12:00
|
|
|
#include <QOpenGLFramebufferObject>
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
#include "tofflinegl.h"
|
|
|
|
|
2016-06-29 18:17:12 +12:00
|
|
|
class QtOfflineGL final : public TOfflineGL::Imp {
|
2016-03-19 06:57:51 +13:00
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
std::shared_ptr<QOpenGLContext> m_context;
|
|
|
|
std::shared_ptr<QOpenGLContext> m_oldContext;
|
|
|
|
std::shared_ptr<QOffscreenSurface> m_surface;
|
|
|
|
std::shared_ptr<QOpenGLFramebufferObject> m_fbo;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
QtOfflineGL(TDimension rasterSize, std::shared_ptr<TOfflineGL::Imp> shared);
|
|
|
|
~QtOfflineGL();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
void createContext(TDimension rasterSize,
|
2016-06-19 20:06:29 +12:00
|
|
|
std::shared_ptr<TOfflineGL::Imp> shared) override;
|
|
|
|
void makeCurrent() override;
|
|
|
|
void doneCurrent() override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
void saveCurrentContext();
|
|
|
|
void restoreCurrentContext();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
void getRaster(TRaster32P raster) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
2016-06-29 18:17:12 +12:00
|
|
|
class QtOfflineGLPBuffer final : public TOfflineGL::Imp {
|
2016-03-19 06:57:51 +13:00
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
std::shared_ptr<QGLPixelBuffer> m_context;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
QtOfflineGLPBuffer(TDimension rasterSize);
|
|
|
|
~QtOfflineGLPBuffer();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
void createContext(TDimension rasterSize);
|
2016-06-19 20:06:29 +12:00
|
|
|
void makeCurrent() override;
|
|
|
|
void doneCurrent() override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
void getRaster(TRaster32P raster) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|