1

我没有正确理解 glutSwapBuffer 的功能。在我的代码中,如果我不使用 glutSwapBuffer 则窗口中没有背景颜色并且它保持透明,捕获其背景中的任何内容。我认为背景颜色实际上是由 glClearColor 分配的,而不是不使用 glutSwapBuffer 我没有得到任何背景颜色。

4

2 回答 2

2

这个问题一遍又一遍地出现,我认为您所描述的实际上是当您在合成窗口管理器中专门绘制到前端缓冲区时会发生什么。

如果不交换缓冲区,它就不能正确地绘制你的窗口,所以窗口看起来是透明的。合成窗口管理器需要双缓冲,而且许多混合集成/离散 GPU 实现(例如 nVIDIA Optimus)似乎也需要双缓冲。简而言之,现在没有真正的理由在桌面平台上使用单缓冲渲染。

可以肯定的是,您的情况是否与此类似?此屏幕截图显示了当仅使用单缓冲的窗口在合成窗口管理器中移动时会发生什么。

如果是这样,可以在这里找到更彻底的解释。

于 2013-09-30T14:04:45.457 回答
1

opengl 通常配置为使用双缓冲。

您首先绘制到一个缓冲区......然后将其与第二个交换并呈现在屏幕上。如果不调用 glutSwapBuffer,您将看不到任何东西,这是正确的行为。

关于opengl中的双重(和更多)缓冲

于 2013-09-30T13:19:14.330 回答