123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #ifndef QGLFRAMEBUFFEROBJECT_H
- #define QGLFRAMEBUFFEROBJECT_H
- #include <QtOpenGL/qgl.h>
- #include <QtGui/qpaintdevice.h>
- QT_BEGIN_NAMESPACE
- class QGLFramebufferObjectPrivate;
- class QGLFramebufferObjectFormat;
- class Q_OPENGL_EXPORT QGLFramebufferObject : public QPaintDevice
- {
- Q_DECLARE_PRIVATE(QGLFramebufferObject)
- public:
- enum Attachment {
- NoAttachment,
- CombinedDepthStencil,
- Depth
- };
- QGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D);
- QGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D);
- QGLFramebufferObject(const QSize &size, Attachment attachment,
- GLenum target = GL_TEXTURE_2D, GLenum internal_format = 0);
- QGLFramebufferObject(int width, int height, Attachment attachment,
- GLenum target = GL_TEXTURE_2D, GLenum internal_format = 0);
- QGLFramebufferObject(const QSize &size, const QGLFramebufferObjectFormat &format);
- QGLFramebufferObject(int width, int height, const QGLFramebufferObjectFormat &format);
- virtual ~QGLFramebufferObject();
- QGLFramebufferObjectFormat format() const;
- bool isValid() const;
- bool isBound() const;
- bool bind();
- bool release();
- GLuint texture() const;
- QSize size() const;
- QImage toImage() const;
- Attachment attachment() const;
- QPaintEngine *paintEngine() const Q_DECL_OVERRIDE;
- GLuint handle() const;
- static bool bindDefault();
- static bool hasOpenGLFramebufferObjects();
- void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
- void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
- static bool hasOpenGLFramebufferBlit();
- static void blitFramebuffer(QGLFramebufferObject *target, const QRect &targetRect,
- QGLFramebufferObject *source, const QRect &sourceRect,
- GLbitfield buffers = GL_COLOR_BUFFER_BIT,
- GLenum filter = GL_NEAREST);
- protected:
- int metric(PaintDeviceMetric metric) const Q_DECL_OVERRIDE;
- int devType() const Q_DECL_OVERRIDE { return QInternal::FramebufferObject; }
- private:
- Q_DISABLE_COPY(QGLFramebufferObject)
- QScopedPointer<QGLFramebufferObjectPrivate> d_ptr;
- friend class QGLPaintDevice;
- friend class QGLFBOGLPaintDevice;
- };
- class QGLFramebufferObjectFormatPrivate;
- class Q_OPENGL_EXPORT QGLFramebufferObjectFormat
- {
- public:
- QGLFramebufferObjectFormat();
- QGLFramebufferObjectFormat(const QGLFramebufferObjectFormat &other);
- QGLFramebufferObjectFormat &operator=(const QGLFramebufferObjectFormat &other);
- ~QGLFramebufferObjectFormat();
- void setSamples(int samples);
- int samples() const;
- void setMipmap(bool enabled);
- bool mipmap() const;
- void setAttachment(QGLFramebufferObject::Attachment attachment);
- QGLFramebufferObject::Attachment attachment() const;
- void setTextureTarget(GLenum target);
- GLenum textureTarget() const;
- void setInternalTextureFormat(GLenum internalTextureFormat);
- GLenum internalTextureFormat() const;
- bool operator==(const QGLFramebufferObjectFormat& other) const;
- bool operator!=(const QGLFramebufferObjectFormat& other) const;
- private:
- QGLFramebufferObjectFormatPrivate *d;
- void detach();
- };
- QT_END_NAMESPACE
- #endif
|