[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