summaryrefslogtreecommitdiffstats
path: root/examples/qwindow-compositor/surfacerenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/qwindow-compositor/surfacerenderer.h')
-rw-r--r--examples/qwindow-compositor/surfacerenderer.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/qwindow-compositor/surfacerenderer.h b/examples/qwindow-compositor/surfacerenderer.h
new file mode 100644
index 0000000..df60b9d
--- /dev/null
+++ b/examples/qwindow-compositor/surfacerenderer.h
@@ -0,0 +1,29 @@
+#ifndef SURFACERENDERER_H
+#define SURFACERENDERER_H
+
+#include <QOpenGLContext>
+#include <QGLShaderProgram>
+#include <QWindow>
+
+class SurfaceRenderer
+{
+public:
+ SurfaceRenderer(QOpenGLContext *context, QWindow *surface);
+
+ void drawImage(const QImage &image, const QRect &geometry);
+ void drawTexture(int textureId, const QRect &geometry, int depth = 0);
+ GLuint textureFromImage(const QImage &image);
+
+private:
+
+ QOpenGLContext *m_context;
+ QWindow *m_surface;
+ QGLShaderProgram *m_shaderProgram;
+ QMatrix4x4 m_transformMatrix;
+
+ int m_matrixLocation;
+ int m_vertexCoordEntry;
+ int m_textureCoordEntry;
+};
+
+#endif // SURFACERENDERER_H