[Qt-interest] where do you initialize Opengl?

John McClurkin jwm at nei.nih.gov
Sat Oct 31 22:15:16 CET 2009


Shi Yan wrote:
> hello guys,
> 
> i'm writing a simple 3D CAD tool. i'm using the Model-view pattern. i
> have several qglwidgets representing different cameras viewing the
> same scene and a singleton class, which i call a "Scene".
> 
> inside this "Scene" class, i define the geometry that needs to be
> rendered and initialize GLSL shader language, etc.
> 
> the problem where should i call Scene.init() ?
> 
> one option is calling it within the initializeGL() function of a
> qglwidgets. but there are many qglwidgets in my program. if i call
> scene.init() inside initializeGL(), then the initialization will
> execute several times.
> 
> however, if i call scene initialization somewhere else (for example in
> the main function), it will fail, because the opengl context hasn't
> been set up yet:
> 
> main()
> {
>     QApplication app(argc, argv);
>     MainWindow mainWindow;
> scene.init();
>     mainWindow.showMaximized();
>     return app.exec();
> }
> 
> 
> is there anyway to initialize opengl related settings right after QT
> sets up the opengl?
> 
> i think QT should pop up a signal after setting up Opengl. this signal
> should be emitted by a global object, say QGLContext.
> 
> and then, i can write a slot, once the opengl is ready, i call my
> initialization function.
> 
> hope you can give me some advice.
> 
> is the Qt team reading this ?  what do you think about the
> "Opengl-ready signal"?
> 
> 
> thanks.
Include a flag in your Scene.init() function that only allows the code 
to execute one time.



More information about the Qt-interest-old mailing list