File indexing completed on 2025-02-21 10:12:17
0001
0002
0003
0004 #ifndef QOPENGLTEXTUREBLITTER_H
0005 #define QOPENGLTEXTUREBLITTER_H
0006
0007 #include <QtOpenGL/qtopenglglobal.h>
0008
0009 #include <QtGui/qopengl.h>
0010 #include <QtGui/QMatrix3x3>
0011 #include <QtGui/QMatrix4x4>
0012
0013 QT_BEGIN_NAMESPACE
0014
0015 class QOpenGLTextureBlitterPrivate;
0016
0017 class Q_OPENGL_EXPORT QOpenGLTextureBlitter
0018 {
0019 public:
0020 QOpenGLTextureBlitter();
0021 ~QOpenGLTextureBlitter();
0022
0023 enum Origin {
0024 OriginBottomLeft,
0025 OriginTopLeft
0026 };
0027
0028 bool create();
0029 bool isCreated() const;
0030 void destroy();
0031
0032 bool supportsExternalOESTarget() const;
0033 bool supportsRectangleTarget() const;
0034
0035 void bind(GLenum target = GL_TEXTURE_2D);
0036 void release();
0037
0038 void setRedBlueSwizzle(bool swizzle);
0039 void setOpacity(float opacity);
0040
0041 void blit(GLuint texture, const QMatrix4x4 &targetTransform, Origin sourceOrigin);
0042 void blit(GLuint texture, const QMatrix4x4 &targetTransform, const QMatrix3x3 &sourceTransform);
0043
0044 static QMatrix4x4 targetTransform(const QRectF &target, const QRect &viewport);
0045 static QMatrix3x3 sourceTransform(const QRectF &subTexture, const QSize &textureSize, Origin origin);
0046
0047 private:
0048 Q_DISABLE_COPY(QOpenGLTextureBlitter)
0049 Q_DECLARE_PRIVATE(QOpenGLTextureBlitter)
0050 QScopedPointer<QOpenGLTextureBlitterPrivate> d_ptr;
0051 };
0052
0053 QT_END_NAMESPACE
0054
0055 #endif