Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt afficher une image dans un QOpenGLContext

    4 décembre 2019 à 15:42:50

    Bonjour,

    Je cherche à afficher un fond coloré (ou une image mais c'est assez pareil) dans un context OpenGL. J'ai essayé beaucoup de codes différents et mes derniers essaies ressemblent plus à des bouts de codes mis ensemble dans le désespoir. 

    Mon but étant de créer l'écran d'accueil d'un jeux avant de lancer une partie qui se passera sous OpenGL je ne sais pas si ma solution de travailler avec QOpenGLPaintDevice est bien pensée, si vous avez des suggestions, je suis preneur.

    #include <QGuiApplication>
    #include <QWindow>
    #include <QOpenGLContext>
    #include <QPainter>
    #include <QOpenGLPaintDevice>
    #include <QColor>
    
    
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        QSurfaceFormat format;
        format.setMajorVersion(3);
        format.setMinorVersion(3);
    
        QWindow MainWindow;
        MainWindow.setSurfaceType(QWindow::OpenGLSurface);
        MainWindow.setFormat(format);
        MainWindow.resize(1500,700);
        MainWindow.create();
    
        QOpenGLContext context(&MainWindow);
        context.setFormat(format);
        if (!context.create())
            qFatal("Cannot create the requested OpenGL context!");
        context.makeCurrent(&MainWindow);
    
        QOpenGLPaintDevice* device= new QOpenGLPaintDevice(1400, 600);
    
        QPixmap* imgFond = new QPixmap(1400, 400);
        imgFond->fill(QColor(0,200,150,255));
    
        QPainter painter;
        painter.begin(device);
        painter.drawPixmap(200,200,*imgFond);
        painter.end();
    
        MainWindow.show();
    
        return app.exec();
    }
    


    Autre problème, je suis incapable de redimensionner la fenêtre. Lorsque je sélectionne un coin pour le déplacer il se déplace de quelque pixels à chaque essaie mais refuse de bouger normalement, comme si j'avais laché le coin tout de suite après l'avoir sélectionné et je n'ai rien trouvé qui résolve mon problème.

    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2019 à 19:56:40

      Je n'utilise pas trop QOpenGLPaintDevice, cela peut provoquer des conflits dans le contexte opengl. Je préfère créer un contexte et utiliser que les fonctions opengl. Je dirais que le mieux pour utiliser QOpenGLPaintDevice est de l'utiliser sur son propre contexte opengl uniquement.

      Le moyen classique pour afficher une image est de créer un quad a la taille de la fenêtre et d'afficher l'image comme une texture.

      Pour la taille de la fenetre, je vois pas trop dans ton code ce qui pourrait expliquer ca.

      • Partager sur Facebook
      • Partager sur Twitter

      Qt afficher une image dans un QOpenGLContext

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown