12 #ifndef hifi_ResourceImageItem_h
13 #define hifi_ResourceImageItem_h
15 #include "Application.h"
17 #include <gl/Config.h>
19 #include <QQuickFramebufferObject>
20 #include <QQuickWindow>
23 #include <TextureCache.h>
25 class QOpenGLFramebufferObject;
26 class QOpenGLShaderProgram;
28 class ResourceImageItemRenderer :
public QObject,
public QQuickFramebufferObject::Renderer {
31 ResourceImageItemRenderer();
32 QOpenGLFramebufferObject* createFramebufferObject(
const QSize& size)
override;
33 void synchronize(QQuickFramebufferObject* item)
override;
34 void render()
override;
38 bool _visible{
false };
40 NetworkTexturePointer _networkTexture;
41 QQuickWindow* _window{
nullptr };
44 QOpenGLFramebufferObject* _copyFbo {
nullptr };
45 QOpenGLShaderProgram* _shader{
nullptr };
46 GLsync _fenceSync { 0 };
52 class ResourceImageItem :
public QQuickFramebufferObject {
54 Q_PROPERTY(QString url READ getUrl WRITE setUrl)
55 Q_PROPERTY(
bool ready READ getReady WRITE setReady)
58 QString getUrl()
const {
return m_url; }
59 void setUrl(
const QString& url);
60 bool getReady()
const {
return m_ready; }
61 void setReady(
bool ready);
62 QQuickFramebufferObject::Renderer* createRenderer()
const override {
return new ResourceImageItemRenderer; }
66 bool m_ready {
false };