我使用的代碼從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. Python中的僞透明窗口背景
- 2. Tkinter窗口中的透明背景
- 3. 帶透明背景的LWJGL窗口?
- 4. 透明窗口背景(Python Tkinter)
- 5. xlib半透明窗口背景
- 6. 如何切換不透明到透明背景的子窗口
- 7. WPF窗口用透明的含背景不透明控制
- 8. 與透明背景
- 9. 與透明背景
- 10. 與透明背景
- 11. 透明窗體背景HTML
- 12. 使窗體背景透明
- 13. 在系統上的透明背景::窗口::窗體::形式
- 14. 窗體的透明背景(Windows窗體)
- 15. 防止透明背景與不透明背景重疊
- 16. 套用CIFilter背景過濾器時,主窗口是透明
- 17. 與透明元件背景
- 18. CWnd與透明背景
- 19. View.getDrawingCache()與背景半透明,
- 20. C#與GTK透明背景#
- 21. 寫意與透明背景
- 22. 如何在PyGTK和PyCairo的窗口中獲得透明背景?
- 23. 透明背景
- 24. 與Linux的透明窗口
- 25. 窗體上的透明背景
- 26. 如何使窗口小部件背景在Qt中透明
- 27. Flex - 在彈出窗口中禁用透明背景疊加
- 28. Qt的窗口有透明的背景圖像
- 29. 窗口的背景中創建一個透明的孔 - WPF
- 30. 如何顯示透明背景圖像的彈出窗口?
你有沒有考慮使用``而不是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