1#ifndef MYTHPAINTER_OPENGL_H_
2#define MYTHPAINTER_OPENGL_H_
10#include <QRecursiveMutex>
21class QOpenGLFramebufferObject;
22class QOpenGLShaderProgram;
34 void DeleteTextures(
void);
36 QString
GetName(
void)
override {
return {
"OpenGL"}; }
41 void Begin(QPaintDevice *Parent)
override;
46 void DrawRect(QRect Area,
const QBrush &FillBrush,
47 const QPen &LinePen,
int Alpha)
override;
49 const QBrush &FillBrush,
const QPen &LinePen,
int Alpha)
override;
54 void ClearCache(
void);
56 QOpenGLShaderProgram* GetProceduralShader(
const ProcSource& VertexSource,
const ProcSource& FragmentSource,
const QString& SourceHash);
70 std::array<QOpenGLBuffer*,MAX_BUFFER_POOL> m_mappedBufferPool {
nullptr };
71 size_t m_mappedBufferPoolIdx { 0 };
72 bool m_mappedBufferPoolReady {
false };
std::list< MythGLTexture * > m_textureDeleteList
QString GetName(void) override
bool SupportsAlpha(void) override
bool SupportsAnimation(void) override
MythImage * GetFormatImagePriv(void) override
Creates a reference counted image, call DecrRef() to delete.
QVector< MythGLTexture * > m_mappedTextures
QHash< QString, QOpenGLShaderProgram * > m_procedurals
bool SupportsClipping(void) override
QRecursiveMutex m_imageAndTextureLock
std::list< MythImage * > m_imageExpireList
QMap< MythImage *, MythGLTexture * > m_imageToTextureMap
virtual void PushTransformation(const UIEffects &zoom, QPointF center=QPointF())
virtual void DrawProcedural(QRect, int, const ProcSource &, const ProcSource &, const QString &)
virtual void DeleteFormatImagePriv(MythImage *im)=0
virtual void DrawRect(QRect area, const QBrush &fillBrush, const QPen &linePen, int alpha)
virtual void DrawImage(QRect dest, MythImage *im, QRect src, int alpha)=0
virtual void Begin(QPaintDevice *)
virtual void PopTransformation(void)
virtual void DrawRoundRect(QRect area, int cornerRadius, const QBrush &fillBrush, const QPen &linePen, int alpha)
virtual void FreeResources(void)
std::shared_ptr< QByteArray > ProcSource
static constexpr size_t MAX_BUFFER_POOL