我有QMainWindow
一个QGLWidget
在里面。我希望小部件显示我自己选择的“清晰”颜色,而不是默认的黑屏。
void MyQGLWidget::initializeGL(void) {
glClearColor(0.7f, 0.7f, 0.7f, 1.0f);
}
void MyQGLWidget::paintGL(void) {
qDebug("Painting grey-ness");
glClear(GL_COLOR_BUFFER_BIT);
// ... Do more stuff, but only after a certain event has happened ...
}
这行得通,我注意到该方法在启动过程中被调用了 4 次。但是,我只想在方法中将其绘制为空白一次paintGL()
,因为此方法在启动后经常被调用,如果在每次调用时都清除缓冲区,实际上会有很小但显着的性能损失。
所以我把代码改成这样:
void MyQGLWidget::paintGL(void) {
static bool screenOnBlank = false;
if (!screenOnBlank) {
qDebug("Painting grey-ness");
glClear(GL_COLOR_BUFFER_BIT);
screenOnBlank = true;
}
// ... Do more stuff, but only after a certain event has happened ...
}
现在清除只完成一次,但我留下的是黑屏,而不是灰屏glClearColor
。为什么是这样?为什么 QGLWidget 再次将我的屏幕涂黑?更重要的是,如何确保屏幕是我自己的默认颜色,而不是在每个时间步骤都将其重新绘制为空白?