0

私のアプリケーションには、メイン クロックとして QTimer と GLCanvas オブジェクトが含まれています。タイマーはキャンバスの updateGL 関数を呼び出しており、updateGL は次に paintGL を呼び出します。

paintGL が完全に空で、何もレンダリングされていない場合でも、約 100kb/s の大きなメモリ リークが発生することに気付きました。updateGL 呼び出しを停止すると、メモリ リークはなくなります。

私のコードはすべてコメントアウトされていますが、リークは続いています。私がしなければならないある種のクリアリングがありますか、それとも私は間違いを犯しましたか? どんな助けでも大歓迎です。

    void GLCanvas::initializeGL() {
        glClearColor(21.0f/256.0f,21.0f/256.0f, 21.0f/256.0f, 1);
        glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LEQUAL);
    }

    void GLCanvas::resizeGL(int width, int height) {
        glViewport(0, 0, width, height);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45, (float)width/(float)height, 1, 1000);
        glMatrixMode(GL_MODELVIEW);
    }



    void GLCanvas::paintGL() {
        // Nothing
    }
4

1 に答える 1

0

あなたのタイマーはどのくらいの頻度で update() を呼び出しますか?

タイマーは何のため?そのような重要なタスクのために Qtimer から抜け出すことができるかもしれません。

于 2013-06-15T21:14:10.027 に答える