QT OpenGLWidget的surfaceFormat
Posted myboat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT OpenGLWidget的surfaceFormat相关的知识,希望对你有一定的参考价值。
由OpenGLWidget和QOpenGLFunctions_2_0派生了类,试图使用双帧缓冲(Double Buffer)进行渲染。下面是部分功能代码:
initializeGL()中:
QSurfaceFormat uformat;
uformat.setDepthBufferSize(24);
uformat.setStencilBufferSize(8);
uformat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
this->context()->setFormat(uformat);
PaintGL()中绘制完成后:
this->context()->swapBuffers(this->context()->surface());
后发现没有使用swapBuffers和glFlush,绘制不受影响,照样完成动画的绘制,很奇怪。于是在initializeGL()的前部加入如下代码测试:
QSurfaceFormat format = this->context()->surface()->format();
QSurfaceFormat::SwapBehavior b = format.swapBehavior();
发现系统一开始b就是double_buffer。可见本例程不需要进行任何设置就在使用双缓冲,可以用glFlush,但swapBuffers好像不太需要
以上是关于QT OpenGLWidget的surfaceFormat的主要内容,如果未能解决你的问题,请参考以下文章
Qt 中的 GLWidget 仅在 mousemove 上更新