启用多重采样时,QOpenGLWidget update()不会渲染场景

时间:2015-10-03 12:58:32

标签: c++ qt opengl

我尝试使用消除锯齿来获取场景中的整形边缘。但是,当我启用多重采样并且我调用QOpenGLWidget :: update()时,场景不会更新。虽然如果我点击场景然后渲染消除锯齿的场景。如果我注释掉一行设置使用的样本数,那么在调用update时,别名场景将正常呈现。

我在main.cpp中使用CoreProfile 4.3设置默认表面格式,样本设置为4。

            mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                public void onCompletion(MediaPlayer mp) {
                    v.clearAnimation();
                    switch (v.getId()) {
                        case R.id.imgbutton1:
                            v.setBackgroundResource(R.drawable.boat);
                            break;
                        case R.id.imgbutton2:
                            v.setBackgroundResource(R.drawable.train);
                            break;
                        case R.id.imgbutton3:
                            v.setBackgroundResource(R.drawable.rocket);
                            break;
                    }
                    Log.i(TAG, "v animation clear: " + v.getAnimation());
                    Log.i(TAG, "Later mp: " + mp.getAudioSessionId());
                }

            });

在我的viewer.cpp中继承了QOpenGLWidget我启用了GL_MULTISAMPLE

#include <QApplication>
#include "widgets/mainwindow.h"

int main(int argc, char *argv[])
{
    auto format = QSurfaceFormat();
    format.setVersion(4,3);
    //If I comment out this line everything works great but with jagged edges 
    format.setSamples(4);
    format.setProfile(QSurfaceFormat::CoreProfile);
    QSurfaceFormat::setDefaultFormat(format);
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    w.resize(1200, 800);
    return a.exec();
}

当我在使用多重采样时调用更新时,当我加载新网格时,不会渲染的示例(还有更多)。

   QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();

    f->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    f->glEnable(GL_MULTISAMPLE);

但是,当我点击屏幕时,场景会更新。与我的网格导入方法相比,我的鼠标移动事件在下面,并没有做任何特别的事情。

auto ViewerWidget::importMesh(QString filename) -> void
{
    mesh = new Mesh(filename);
    initializeGL();
    update();

}

如何解决这个问题的任何建议将不胜感激!提前谢谢。

0 个答案:

没有答案