[Qt-interest] Where to initialize GLEW?
Oliver Demetz
forenbeitraege at oliverdemetz.de
Mon Jun 29 16:23:29 CEST 2009
That's correct.
You would have to explicitly initialize the two widgets to use context
sharing.
This is not done automatically.
Joe Liu schrieb:
> Hi Samuel,
>
> Are you sure 'QGLWidget use context sharing'? I have two GLWindow
> classes: CGLWnd1, CGLWnd2 which are both derived from class QGLWidget.
>
> In intializeGL() of each GLWindow class, I generate a texture by using
> glGenTexture(), like this:
>
> class CGLWnd1 : public QGLWidget
> {
> void initializeGL()
> {
> int tex;
> glGenTexture(1, &tex);
> cout<<tex;
> }
> };
>
> class CGLWnd2 : public QGLWidget
> {
> void initializeGL()
> {
> int tex;
> glGenTexture(1, &tex);
> cout<<tex;
> }
> };
>
> CGLWnd1 a;
> CGLWnd2 b;
>
> a.initializeGL();
> b.initializeGL();
>
> The result outputs are the same: 1;
>
> If the QGLWidget use context sharing, I think the generated texture
> won't have the same texture id;
>
> What is your opinion?
>
> Thanks~~
>
>
> 2009/6/29 Joe Liu <passer.by007gg at gmail.com
> <mailto:passer.by007gg at gmail.com>>
>
> Thanks Samuel,
>
> I would like to implement my own FBO class.
>
> So the QGLWidget use the context sharing mechanism. I am going to
> read more about it.
>
> Thanks again for your suggestions~~
>
> 2009/6/29 Samuel Rødal <sroedal at trolltech.com
> <mailto:sroedal at trolltech.com>>
>
> Joe Liu wrote:
>
> Hi,
>
> I would like to implement my FBO class with GLEW; As you
> know, users should invoke glewInit() after an OpenGL
> rendering context is created and before calling any glew
> functions.
>
> Since I use QGLWidget as the base class of my opengl window
> class, and my GLWindow might have more than one instances,
> so if I put glewInit() in function initializeGL(), it will
> be called for multiple times. I think that is ugly.
>
> What is the right manner to call glewInit() in a Qt OpenGL
> program? Is there any way to check whether the GLEW is
> initialized or not?
>
> BTW, what will glewInit() do exactly? Is it associated with
> GL Rendering Context? And How does the QGLWidget manage the
> Rendering Context?
>
> Thank for your time~~
>
>
> Joe
>
>
> Calling glewInit() will initialize function pointers related to
> the available OpenGL extensions, and let you query which
> extensions are available. See http://glew.sourceforge.net/basic.html
>
> If you want to use GLEW from multiple contexts you should have a
> look at the Multiple Rendering Contexts section at
> http://glew.sourceforge.net/advanced.html
>
> As long as your QGLWidgets use context sharing I don't think it
> should be necessary to use GLEW MX, though I'm not certain on this.
>
> For the single context case you can call glewInit() either
> initializeGL() or right after the QGLWidget has been constructed
> (in the latter case you need to call QGLWidget::makeCurrent()
> first, this happens automatically before initializeGL() is called).
>
> Btw, there's a QGLFramebufferObject class in Qt already, are you
> sure you need to implement your own?
>
> --
> Samuel
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list