Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. [SOLVED] Using a vtk renderer in QtQuick
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] Using a vtk renderer in QtQuick

Scheduled Pinned Locked Moved QML and Qt Quick
30 Posts 7 Posters 24.1k Views 1 Watching
  • 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.
  • Z Offline
    Z Offline
    z.emb
    wrote on last edited by
    #19

    Actually, I posted almost the whole implementation already, but here you go: "Node":http://pastebin.com/8CgheNzm . The implementation of the texture and the item are already posted.

    bq. I noticed setFbo isn’t called anywhere?

    You may have noticed that I pass the FBO to the constructor of the texture ;-)

    bq. What header did you include?

    I compiled Qt 5.0.0 with ANGLE deactivated and the -opengl desktop flag, because I use VTK which also uses the native OpenGL system.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      Martell Malone
      wrote on last edited by
      #20

      I need to set the geometry in my setsize or I get nothing in the window.

      @
      QSGFboTexture::QSGFboTexture(QGLFramebufferObject* fbo)
      :QSGTexture()
      {
      m_fbo = fbo;

      // setFbo(fbo);
      if (m_fbo != NULL)
      firstTimeBound = true;

      }
      @

      same as setFbo ;-)

      The problem is that on ANGLE we are using a GLES emulator not OpenGL.
      Those two functions don't exsist.

      What happens to your window when you dont call the push and pop?

      @void ColorNode::preprocess()
      {
      if(m_fbo == NULL) return; //will happen a few times

      QOpenGLContext::currentContext()->functions()->glUseProgram(0);
      m_fbo->bind();
      

      CCDirector::sharedDirector()->mainLoop();

      m_fbo->release();
      

      m_fbo->toImage().save("name.png","png");

      }@

      1 Reply Last reply
      0
      • Z Offline
        Z Offline
        z.emb
        wrote on last edited by
        #21

        Its not working without the push and pop (nothing is rendered, only the background). Unfortunatelly I cannot tell you why, I'm no OpenGL expert.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          Martell Malone
          wrote on last edited by
          #22

          I think I understand why.
          The only problem is GLES doest support those functions so how do we get around them?

          Maybe I should make a new thread to this issue?

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Martell Malone
            wrote on last edited by
            #23

            I found a new way of solving this problem.

            It Involves setting up a separate opengl context and switching between the two before and after binding and releasing the fbo.

            Any idea how to draw correctly for a y inverted fbo.
            On qquickpainteditem we can set it to flip but not for the qsgtexture :/

            1 Reply Last reply
            0
            • Z Offline
              Z Offline
              z.emb
              wrote on last edited by
              #24

              Hey, thanks for your reply. Can you provide some code how you do that?
              In my case, it also seems to be the cleanest way to do the same thing and I wan't to try that. :-)

              For the flipping problem I would naivly just scale (glScale) the y-Axis with -1. But as I mentioned, I'm no OpenGL expert.

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Martell Malone
                wrote on last edited by
                #25

                Hey z.emb

                I used what was on this thread.

                http://qt-project.org/forums/viewthread/25268/

                I just changed this line for the flip y.

                QSGGeometry::updateTexturedRectGeometry(&m_geometry,
                QRectF(0, 0, m_size.width(), m_size.height()),
                QRectF(0, 0, 1, 1));

                to

                QSGGeometry::updateTexturedRectGeometry(&m_geometry,
                QRectF(0, 0, m_size.width(), m_size.height()),
                QRectF(0, 1, 1, -1));//0011 = old y fliped

                1 Reply Last reply
                0
                • Z Offline
                  Z Offline
                  z.emb
                  wrote on last edited by
                  #26

                  Can you give me some code how you switched the GL-context?

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Martell Malone
                    wrote on last edited by
                    #27

                    Hey Guys,

                    Apologies about not replying.
                    I didn't realize I got a response.

                    I swapped the context at the very beginning by using the code in this thread

                    http://qt-project.org/forums/viewthread/25268/

                    Hope that helps Ricky, just got your pm.

                    Many Thanks
                    Martell

                    1 Reply Last reply
                    0
                    • R Offline
                      R Offline
                      rlonka
                      wrote on last edited by
                      #28

                      Hi,

                      I still did not get it.
                      Could you, please, anyone post a full example about rendering vtk to qtquick?
                      I was trying to understand the discussion but I did not get through...

                      Best regards,

                      radek

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        rpetryniak
                        wrote on last edited by
                        #29

                        Hey, I join to this request. Even the simplest example would be helpful.

                        Regards,
                        rafal

                        1 Reply Last reply
                        0
                        • N Offline
                          N Offline
                          niker91
                          wrote on last edited by
                          #30

                          I have created a repository with code that integrates VTK with Qt QuickControls 2, tested with VTK 8 and Qt 5.9. You can find the code here https://github.com/nicanor-romero/QtVtk with building instructions in the README. Also a brief article about it,
                          https://blog.bq.com/es/integrating-qtquickcontrols-2-with-vtk/

                          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