何时使用Qt在opengl中创建渲染上下文?

时间:2011-11-15 16:15:28

标签: c++ linux qt opengl

我正在尝试使用Qt进行OpenGL。我从Qt的文档中编译了2dpainting example。在示例中是两个并排的动画,一个本地运行,另一个由OpenGL呈现。我不认为有什么不同。如何确保使用硬件加速器。我正在使用ÅngströmLinux的嵌入式设备上运行该示例。

我在opengl小部件的构造函数中添加了一行,以确定使用的渲染器,但该函数始终返回NULL指针。

GLWidget::GLWidget(Helper *helper, QWidget *parent)
     : QGLWidget(QGLFormat(QGL::SampleBuffers), parent), helper(helper)
 {
        elapsed = 0;
        setFixedSize(200, 200);
        setAutoFillBackground(false);
        printf("  OpenGL Renderer:   %s\n",glGetString(GL_RENDERER)); //added this line

 }

现在我在众多在线论坛上看到,我需要一个有效的渲染上下文。但这是什么意思,什么时候使用Qt创建?我尝试在GLWidget的所有其他功能中使用相同的功能,但没有任何运气。

2 个答案:

答案 0 :(得分:2)

我相信它会尽可能晚地初始化,即实际需要绘制的东西。

来自QGLWidget::paintEvent()文档:

  

处理在event参数中传递的绘制事件。将导致调用虚拟paintGL()函数   小部件的渲染上下文将成为当前上下文,如果尚未调用,则将调用initializeGL()。

答案 1 :(得分:1)

openGL场景在QGlWidget paintGL函数中呈现,通常需要使用自己的paintGL函数从QGlWidget派生

NeHe教程已经adapted for Qt