我在显示屏上有以下代码:(它是整个显示功能,空闲功能中的数据发生变化)
glClear(GL_COLOR_BUFFER_BIT);
glDrawPixels(100,100,GL_RGBA,GL_FLOAT,data);
glutSwapBuffers();
glutPostRedisplay();
当我编译此代码时,有时它会闪烁与背景相同的颜色。 我认为GPU在清晰颜色之前捕获了drawpixel,它清除了缓冲区。
我可以在清晰和平局之间延迟,但我几乎在每一帧之间改变data
我该怎么办?
是否有像命令一样的冲洗?
答案 0 :(得分:4)
我怀疑您忘记在glutInitDisplayMode()
调用中指定GLUT_DOUBLE,因此给出了非双缓冲上下文。
此外,在您的显示功能中包含glutPostRedisplay()
并不习惯 - 这应该是在您的空闲功能结束时。