23 #include <qnamespace.h>
25 #include <qoffscreensurface.h>
26 #include <qopenglcontext.h>
27 #include <qopengltexture.h>
28 #include <qopenglversionfunctions.h>
30 #include <qsurfaceformat.h>
38 QObject::connect(context, &QOpenGLContext::destroyed, [=]() {
instances.remove(context); });
46 : _fallbackTexture(QOpenGLTexture::Target2D), _whiteTexture(QOpenGLTexture::Target2D)
53 QImage fallbackImage(QSize(404, 404), QImage::Format_RGBA8888);
54 fallbackImage.fill(QColor(255, 0, 255));
62 QImage whiteImage(QSize(1, 1), QImage::Format_RGBA8888);
63 whiteImage.fill(Qt::white);
67 _whiteTexture.setMagnificationFilter(QOpenGLTexture::Nearest);
69 _whiteTexture.setData(whiteImage, QOpenGLTexture::GenerateMipMaps);
88 std::weak_ptr<QImage> key(image);
93 imageTextures.emplace(key, std::make_unique<QOpenGLTexture>(QOpenGLTexture::Target2D)).first;
95 QOpenGLTexture* glTexture = textureIt->second.get();
96 glTexture->setMinificationFilter(QOpenGLTexture::Nearest);
97 glTexture->setMagnificationFilter(QOpenGLTexture::Nearest);
98 glTexture->setWrapMode(QOpenGLTexture::Repeat);
99 glTexture->setData(*image, QOpenGLTexture::GenerateMipMaps);
102 return &*textureIterator->second;
Tables pour le dialogue de la gestion des preferences (fichier header)
Class allowing to handle textures lifetime.
static QMap< QOpenGLContext *, OGLTextureManager * > instances
QOpenGLTexture * fallbackTexture()
OGLTextureManager(QOpenGLContext *context)
QOpenGLTexture _fallbackTexture
QOpenGLTexture _whiteTexture
static OGLTextureManager * instance(QOpenGLContext *context)
void initializeTextures()
std::map< std::weak_ptr< QImage >, std::unique_ptr< QOpenGLTexture >, std::owner_less<> > imageTextures
QOpenGLTexture * getTexture(const std::shared_ptr< QImage > &image)
QOpenGLTexture * whiteTexture()