我使用的代碼從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