Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. 3rd Party Software
  4. Demo: Integrating OpenSceneGraph with Qt Quick
Forum Update on Monday, May 27th 2025

Demo: Integrating OpenSceneGraph with Qt Quick

Scheduled Pinned Locked Moved 3rd Party Software
osgosgearthopenscenegraphquickqml
20 Posts 6 Posters 28.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    rooi
    wrote on 19 Aug 2013, 07:24 last edited by
    #6

    Hi,

    I found out how to set the opengl version, but unfortunatly it did not solve the problem. Maybe someone has other suggestions on what is going on?

    This is how I set the opengl version by the way. I did not know about the CombatibilityProfile that has to be set for QtQuick.

    QSurfaceFormat format;
    format.setDepthBufferSize( 24 );
    format.setMajorVersion( 4 );
    format.setMinorVersion( 3 );
    format.setSamples( 4 );
    format.setProfile( QSurfaceFormat::CompatibilityProfile );
    view.setFormat(format);

    1 Reply Last reply
    0
    • P Offline
      P Offline
      podsvirov
      wrote on 19 Aug 2013, 08:46 last edited by
      #7

      I am also interested osgEarth project.
      But I have not checked his work in the context of Qt Quick (Qt 5).
      I hope to attend to it in the future (but still do not know when exactly).
      I used osgEarth with widgets (osgQt) - try them for first.

      1 Reply Last reply
      0
      • R Offline
        R Offline
        rooi
        wrote on 19 Aug 2013, 14:17 last edited by
        #8

        Thanks for your reply Konstantin.

        With the help of the osgEarth guys I think I've figured it out.
        When I change the frame function as such it seems to work. Maybe you could review it and include it in the demo?

        Thanks again!

        void frame() {
            if (!compositeViewer.valid()) return;
        
            // Qt bug!?
            QOpenGLContext::currentContext()->functions()->glUseProgram(0);
        
            /* save current OpenGL state  */
            glPushAttrib(GL_TEXTURE_BIT|GL_LIGHTING_BIT|GL_SCISSOR_BIT|GL_STENCIL_BUFFER_BIT);
        
            //char* version = (char*)glGetString(GL_VERSION);
        
            compositeViewer->frame();
        
            // qpainter uses vertex attribs 3,4,5 so we need to explicitly disable them:
            QOpenGLContext::currentContext()->functions()->glDisableVertexAttribArray(3); 
            QOpenGLContext::currentContext()->functions()->glDisableVertexAttribArray(4); 
            QOpenGLContext::currentContext()->functions()->glDisableVertexAttribArray(5); 
            QOpenGLContext::currentContext()->functions()->glDisableVertexAttribArray(6); 
            QOpenGLContext::currentContext()->functions()->glDisableVertexAttribArray(7); 
        
            // qpainter requires depth testing to be off 
            glDisable(GL_DEPTH_TEST) ;
        
            // not sure if this is required; osg changes this when using textures so I reset it to default 
            glPixelStorei(GL_UNPACK_ALIGNMENT,4); 
        
            glPopAttrib();
        
        }
        
        1 Reply Last reply
        0
        • C Offline
          C Offline
          cmannett85
          wrote on 13 Oct 2013, 10:02 last edited by
          #9

          Hi,
          In QuickWindowViewer::Hidden::frame(), the call to QOpenGLContext::currentContext() is returning null for me. The osgviewer and Qt's QML examples work perfectly well, and my machine supports FBOs (OpenGL v3.0) - any ideas why a context couldn't be created?

          1 Reply Last reply
          0
          • C Offline
            C Offline
            cmannett85
            wrote on 13 Oct 2013, 11:11 last edited by
            #10

            I found the problem, the signal/slot connection to the failing method:

            @connect(window, SIGNAL(beforeRendering()), this, SLOT(frame()));@

            It should be specified as a Qt::DirectConnection as noted in the "QQuickWindow docs":http://qt-project.org/doc/qt-5.0/qtquick/qquickwindow.html#exposure-and-visibility - "Warning: As signals related to rendering might be emitted from the rendering thread, connections should be made using Qt::DirectConnection."

            1 Reply Last reply
            0
            • R Offline
              R Offline
              rooi
              wrote on 12 Nov 2013, 22:16 last edited by
              #11

              Hi Konstantin,

              I recently got some more time to look into your project again. As I stated before I like the way you integrate osg and qt/qml.

              I tried to extent the functionality by adding some osg pickers to allow identifying the name and type of a node underneath the mouse. This seems to work initially, but unfortunatly it doesn't after a resize of the window.

              Do you have any idea why this occurs? My guess is that something does not get the new window size after a resize, but which object? Hopefully you could give me another pointer to try and get this fixed.

              Thank you very much!

              Rooi

              1 Reply Last reply
              0
              • R Offline
                R Offline
                rooi
                wrote on 13 Nov 2013, 13:07 last edited by
                #12

                Hi,

                I managed to get the picker to work by doing the following:

                Add the following lines to updateViewport()
                QSize size(quickItem->boundingRect().size().toSize());
                if(view->getCamera()->getGraphicsContext())
                view->getCamera()->getGraphicsContext()->resized( 0, 0, size.width(), size.height() );

                Thanks.

                V 1 Reply Last reply 21 Aug 2015, 02:42
                0
                • A Offline
                  A Offline
                  alydev
                  wrote on 27 Feb 2014, 11:53 last edited by
                  #13

                  Is someone can send me the demo ? I can't download it...

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    podsvirov
                    wrote on 11 Mar 2014, 10:36 last edited by
                    #14

                    I am sorry, but the link to the archive is not working.
                    You can try to get the code via git:
                    @
                    git clone git://podsvirov.pro/osg/osgqtquick.git
                    @

                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      podsvirov
                      wrote on 17 Apr 2014, 13:18 last edited by
                      #15

                      Good news: a link to a screenshot and the source code in the archive is working again!

                      1 Reply Last reply
                      0
                      • A Offline
                        A Offline
                        anu.rastogi
                        wrote on 7 Dec 2014, 00:38 last edited by
                        #16

                        Hi Konstantin,

                        Sub: enable multisampling

                        Your example is really well done, Thanks. Now I want to enable multisampling, but I can not figure out how to enable it. I want to use the buffer mode.
                        The QOpenGLFramebufferObjectFormat.setSamples(4) does not seem to work. I don't have a very deep knowledge or osg::GraphicsWindow and its traits. But if you can guide me, I can take a look.

                        Thanks a lot,

                        1 Reply Last reply
                        0
                        • A Offline
                          A Offline
                          anu.rastogi
                          wrote on 7 Dec 2014, 00:38 last edited by
                          #17

                          Hi Konstantin,

                          Sub: enable multisampling

                          Your example is really well done, Thanks. Now I want to enable multisampling, but I can not figure out how to enable it. I want to use the buffer mode.
                          The QOpenGLFramebufferObjectFormat.setSamples(4) does not seem to work. I don't have a very deep knowledge or osg::GraphicsWindow and its traits. But if you can guide me, I can take a look.

                          Thanks a lot,

                          1 Reply Last reply
                          0
                          • R rooi
                            13 Nov 2013, 13:07

                            Hi,

                            I managed to get the picker to work by doing the following:

                            Add the following lines to updateViewport()
                            QSize size(quickItem->boundingRect().size().toSize());
                            if(view->getCamera()->getGraphicsContext())
                            view->getCamera()->getGraphicsContext()->resized( 0, 0, size.width(), size.height() );

                            Thanks.

                            V Offline
                            V Offline
                            Voya
                            wrote on 21 Aug 2015, 02:42 last edited by
                            #18

                            @rooi
                            oh I am facing the same problem as you did. when I resize the windows ,it seems that the Qopenglcontext turn to null . so the fbo is initialized failed. using the method you give it does not work . i try to delete the updatafbo it works but the size of texture does not changed any more.

                            1 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              podsvirov
                              wrote on 10 Sept 2015, 06:37 last edited by JKSH 9 Dec 2015, 00:27
                              #19

                              Meet osgQtQuick 2.0!

                              1 Reply Last reply
                              0
                              • P Offline
                                P Offline
                                podsvirov
                                wrote on 24 Nov 2015, 17:16 last edited by
                                #20

                                Wow! More than 10 000 views :-)
                                It seems that many who like it!

                                I repeat: Meet osgQtQuick 2.0!

                                1 Reply Last reply
                                0

                                • Login

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved