我使用的代码从How to make an OpenGL rendering context with transparent background?创建具有透明背景上的窗口。我的问题是帧率非常低 - 即使绘制一个四边形(由两个三角形构成),我也有大约20帧/秒。我试图找出为什么和glFlush()大约需要0.047秒。你有什么想法,为什么?同样的东西在没有6000 fps透明背景的窗口中渲染(当我删除60 fps限制时)。它也需要一个核心到100%。我使用Win7在ATI Radeon 4800上以[email protected]测试它。glFlush()发生在窗口很长的时间与透明背景
3
A
回答
3
我想你不能得到良好的性能这样,在这个例子中链接这个有下面的代码
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的,也许有一些办法做到这一点没有数据的性能损失动人。
相关问题
- 1. 带透明背景的LWJGL窗口?
- 2. xlib半透明窗口背景
- 3. 与透明背景
- 4. 与透明背景
- 5. 与透明背景
- 6. 透明窗体背景HTML
- 7. 在系统上的透明背景::窗口::窗体::形式
- 8. 窗体的透明背景(Windows窗体)
- 9. 防止透明背景与不透明背景重叠
- 10. 套用CIFilter背景过滤器时,主窗口是透明
- 11. 透明背景
- 12. 如何在PyGTK和PyCairo的窗口中获得透明背景?
- 13. 与Linux的透明窗口
- 14. 窗体上的透明背景
- 15. Flex - 在弹出窗口中禁用透明背景叠加
- 16. 如何使窗口小部件背景在Qt中透明
- 17. Qt的窗口有透明的背景图像
- 18. 窗口的背景中创建一个透明的孔 - WPF
- 19. 使透明背景的应用程序窗口
- 20. 如何使OpenGL窗口的背景透明?
- 21. 用透明窗帘褪色背景
- 22. AQGridViewCell透明背景
- 23. AS3透明背景
- 24. PHP:透明背景
- 25. Div背景透明
- 26. Pygame透明背景
- 27. html透明背景
- 28. Imageview背景透明
- 29. 透明JFrame背景
- 30. TTStyledTextLabel透明背景
你有没有考虑使用``而不是glFlush()`双缓冲和`SwapBuffers()? – arul 2011-01-24 10:51:53
该技术不适合渲染OpenGL动画,但它是我知道在Vista之前的Windows上绘制透明OpenGL窗口的唯一方法。这个页面有一个有趣的例子,你可以尝试扭转它找到了如何做:http://coreytabaka.com/programming/cube-demo/ – karlphillip 2011-02-01 17:47:47