gpt4 book ai didi

windows - glFlush() 在具有透明背景的窗口上需要很长时间

转载 作者:可可西里 更新时间:2023-11-01 09:26:21 26 4
gpt4 key购买 nike

我使用了 How to make an OpenGL rendering context with transparent background? 中的代码创建一个具有透明背景的窗口。我的问题是帧速率非常低 - 即使我绘制一个四边形(由 2 个三角形组成),我也有大约 20 帧/秒。我试图找出原因,而 glFlush() 大约需要 0.047 秒。你知道为什么吗?在 6000 fps(当我删除 60 fps 限制时)没有透明背景的窗口中呈现相同的东西。它也需要一个核心到 100%。我使用 Win7 在配备 ATI Radeon 4800 的 Q9450@2.66GHz 上对其进行了测试。

最佳答案

我认为你无法通过这种方式获得良好的性能,在链接的示例中有以下代码

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,也许有一些方法可以做到这一点而不会因数据移动而降低性能。

关于windows - glFlush() 在具有透明背景的窗口上需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4780756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com