我正在使用陶(C#)。是否可以防止OpenGL使用缓冲区进行绘图?
我正在使用simpleOpenGlControl,需要防止它使用另一个缓冲区。
发布于 2016-12-20 09:49:22
有趣的是,是否存在双缓冲区的可用性/强制执行不是由OpenGL来选择,而是由窗口系统来选择。通过在窗口的像素格式/可视化(而不是OpenGL上下文)中指定一个"I想要双缓冲区“位来请求双缓冲区。
然而,即使您没有要求,窗口系统也很可能选择给您一个双缓冲区。这就是为什么检查您实际获得的像素格式/可视格式如此重要,如果它有一个双缓冲区,则程序必须相应地操作。
尽管如此,OpenGL本身知道如何使用双缓冲窗口(请注意,实际的缓冲区交换函数不是OpenGL函数,而是窗口系统的函数)。
通过使用glDrawBuffer(GL_FRONT)选择前端缓冲区作为绘图目标,您可以显式地绘制到它。然而,现代窗口系统通常是合成的,这意味着程序的“前端”缓冲区实际上只是窗口系统的另一个屏幕外缓冲区,在表示步骤中作为一个整体呈现。…这最终意味着,整个事情的表现就好像你已经画了整个东西的双缓冲。
通常没有充分的理由来画单一缓冲。“视觉”效果是--取决于您所使用的实现--您可能能够看到绘图过程是如何进行的。,但,这不是给定的。对于OpenGL实现来说,将所有绘图操作排队并在显示刷新之间执行它们是完全有效的,这看起来又是双重缓冲。
https://stackoverflow.com/questions/41233696
复制相似问题