[vtkusers] Rendering VTK inside a QGLWidget
Paul Rossi
paulrossi at mail.ru
Thu Oct 6 12:42:18 EDT 2011
Thank you so much, Clinton
Just by following your tips i managed to render a sphere inside a qglwidget by using the vtkGenericOpenGLRenderWindow
However, i have a question at this point:
I kind of do offscreen rendering, and before and after the rendering i always call:
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,m_uFramebuffer);
GLenum glError = glGetError();
if (glError != GL_NO_ERROR)
throw Exception("Error binding framebuffer (%s).",gluErrorString(glError));
and
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0);
const GLenum glError = glGetError();
if (glError != GL_NO_ERROR)
throw Exception("Error releasing framebuffer (%s).",gluErrorString(glError));
to attach and detach the fbo.
my problem is that this code renders well:
renWin->PushState();
renWin->OpenGLInit();
renWin->Render();
renWin->PopState();
but after that, if i try to detach the framebuffer i get an error "Invalid operation" (even if it renders properly)
I will now try to dig a little into the vtkGenericOpenGLRenderWindow, but do you know what it could be and how it could be fixed?
I also have a last question: is it possible to skip using the RenderWindowInteractor, and somehow feed events to vtk from qt events?
Otherwise, how should i proceed to get interaction from a qglwidget into a vtk interactor?
thank you so much already
Paul
06 октября 2011, 03:18 от Clinton Stimpson <clinton at elemtech.com>:
>
> On Wednesday, October 05, 2011 04:54:40 pm Paul Rossi wrote:
> > Hi all,
> >
> > I have a problem and i havent been able to fix it.
> > i want to use VTK from Qt, and i know that there is the
> > nice QVTK module for that.
> > My problem is that i have to do my rendering from within a QGLWidget
> > (i am using a sort of framework where my views are qglwidgets, and i
> > cannot use any other viewer class)
> >
> > I know it is possible to render vtk from within a QGraphicsView, but i
> > still cannot find if or how to render a vtkrenderer from within a
> > qglwidget
> >
> > any suggestion?
> >
>
> Try using the vtkGenericOpenGLRenderWindow in VTK 5.8.
> You can also see QVTKWidget2 as an example of using it, but depending on what
> you are doing, it may be simpler. Or simply use QVTKWidget2 which is derived
> from QGLWidget, if that'll fit in your framework.
>
> If you do it yourself, you should at least call in the construction, depending
> on how you are going to use it:
> renWin->SwapBuffersOff()
>
> in the resize
> renWin->SetSize()
>
> in the paintGL()
> renWin->PushState()
> renWin->OpenGLInit()
> renWin->Render()
> renWin->PopState()
>
> If you are also mixing calls to QPainter, make sure to call
> QPainter::beginNativePainting()/endNativePainting().
>
> There's more to do if you want to use vtkRenderWindowInteractor as well.
>
> --
> Clinton Stimpson
> Elemental Technologies, Inc
> Computational Simulation Software, LLC
> www.csimsoft.com
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list