glFlush()在具有透明背景的窗口上花费很长时间

我用如何使透明背景的OpenGL渲染上下文的代码? 创build一个透明背景的窗口。 我的问题是帧速率非常低 – 即使画一个四边形(由两个三angular形组成),我也有大约20帧/秒的速度。 我试图找出为什么和glFlush()大约需要0.047秒。 你知道为什么吗? 同样的事情是在6000 fps没有透明背景的窗口中呈现(当我删除60 fps的限制)。 它也需要一个核心到100%。 我使用Win7在ATI Radeon 4800上testingQ9450@2.66GHz。

Solutions Collecting From Web of "glFlush()在具有透明背景的窗口上花费很长时间"

我认为你不能以这种方式获得好的表现,在链接的例子中有下面的代码

 void draw(HDC pdcDest) { assert(pdcDIB); verify(BitBlt(pdcDest, 0, 0, w, h, pdcDIB, 0, 0, SRCCOPY)); } 

BitBlt是在处理器上执行的函数,而OpenGL函数是由GPU执行的。 因此,从GPU渲染的数据爬回到主内存,有效地从GPU到CPU的带宽是有限的(甚至更多的是因为数据返回那里一次BitBlt'ed)。

如果你真的想要带有渲染内容的透明窗口,你可能想看看Direct2D和/或Direct3D,也许有一些方法可以做到这一点,而不会有数据移动的性能损失。