#ifndef OPENGLRENDERER_H
#define OPENGLRENDERER_H
#include <QObject>
#include <qquickframebufferobject>
#include <qopenglframebufferobject>
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
#include <QMatrix4x4>
class RGBRenderer : public QQuickFramebufferObject::Renderer, public QOpenGLFunctions
{
public:
explicit RGBRenderer();
~RGBRenderer();
QOpenGLFramebufferObject *createFramebufferObject(const QSize &size)
{
QOpenGLFramebufferObjectFormat format;
format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
return new QOpenGLFramebufferObject(size, format);
}
void render();
void synchronize(QQuickFramebufferObject *);
protected:
void initShader();
void initTexture();
private:
GLuint m_textureID;
GLuint m_program;
int m_width;
int m_height;
unsigned char *m_rgbData;
int m_line;
QMatrix4x4 projection;
};
class OpenglRenderer : public QQuickFramebufferObject
{
Q_OBJECT
public:
explicit OpenglRenderer(QQuickItem *parent = Q_NULLPTR): QQuickFramebufferObject(parent){}