1

我在显示中有以下代码:(它是整个显示函数,并且空闲函数中的数据发生了变化)

glClear(GL_COLOR_BUFFER_BIT);
glDrawPixels(100,100,GL_RGBA,GL_FLOAT,data);
glutSwapBuffers();
glutPostRedisplay();

当我编译这段代码时,有时它会闪烁与背景相同的颜色。我认为GPU在清除颜色之前捕获了drawpixel,并清除了缓冲区。

我可以在清除和平局之间延迟,但我data几乎在每一帧之间都会改变。
我该怎么办?有类似命令的冲洗吗?

4

1 回答 1

4

我怀疑您忘记在glutInitDisplayMode()调用中指定 GLUT_DOUBLE,因此获得了非双缓冲上下文。

此外,glutPostRedisplay()在您的显示功能中包含 a 是不习惯的——它应该在您的空闲功能的末尾。

于 2013-04-03T19:07:05.587 回答