對不起,如果這是題外話。如果是這樣;請隨時將其移至相應的網站。
如何GDI/GDI +渲染到圖形卡(在屏幕上顯示的內容),而無需使用一個較低級別的API的用於與GPU如DirectX或OpenGL的通信?它如何在不使用任何API的情況下繪製屏幕?是;我知道該圖像是在CPU上合成和渲染的,但是它必須在顯示器上顯示之前將其發送到GPU。這個怎麼用?GDI/GDI +如何在沒有OpenGL或DirectX的情況下工作
9
A
回答
12
GDI原語是由視頻卡驅動程序實現的。視頻驅動程序由GPU製造商提供,並使用專有的寄存器級接口與GPU進行通信,不需要此級別的公共API。
與您聲稱所知道的相反,該圖像通常不會在CPU上完全呈現和合成。相反,視頻驅動程序可以自由使用CPU和GPU處理的任意組合,並且通常將大量GDI命令(尤其是位塊傳輸,也稱爲blitting)委派給GPU。
由於專用接口必須足夠強大,能夠支持OpenGL的客戶端驅動程序和DirectX驅動程序,這是毫不奇怪的是,GDI驅動程序可以將命令傳遞到GPU執行。
引導期間
早期(和Windows安裝)時,沒有特定製造商驅動程序可用,視頻API並在軟件中執行所有的渲染,並寫入到幀緩衝區,這僅僅是其中飼料的GPU RAMDAC的內存區域並映射到CPU地址空間。幀緩存以幾種衆所周知的格式之一(由VESA定義)存儲。
相關問題
- 1. 如何使HTML5在沒有JS或Jquery的情況下工作
- 2. 如何在不使用DirectX或OpenGL的情況下呈現遊戲?
- 3. DropDownList的SelectedIndexChanged()如何在沒有回傳的情況下工作?
- 4. SDL如何在沒有源文件的情況下工作?
- 5. 此代碼如何在沒有@EnableMVC的情況下工作?
- 6. UITableView如何在沒有註冊類的情況下工作:forCellReuseIdentifier:
- 7. hibernate如何在沒有JPA規範的情況下工作
- 8. printf如何在沒有修飾符的情況下工作?
- 9. 如何使RSACryptoServiceProvider在沒有填充的情況下工作(nopadding)?
- 10. 如何讓Drupal在沒有PDO的情況下工作
- 11. AirPrint如何在沒有驅動程序的情況下工作?
- 12. Skype如何在沒有端口轉發的情況下工作?
- 13. 如何讓php在沒有cron的情況下永遠工作?
- 14. 「Puts()」函數如何在沒有參數的情況下工作?
- 15. 如何在沒有map的情況下連接工作DispatchToProps
- 16. 在沒有OpenGL的情況下複製OpenGL正投影行爲
- 17. jQuery-File-Upload插件如何在沒有Flash或Silverlight的情況下工作?
- 18. 我可以在沒有DirectX 11卡的情況下使用DirectX 11 SDK嗎?
- 19. @PreAuthorize如何在反應式應用程序中工作或者如何在沒有ThreadLocal的情況下工作?
- 20. 在哪種情況下選擇GDI優於DirectX/OpenGL
- 21. 或者操作員在這種情況下如何工作?
- 22. 如何在沒有Visual Studio的情況下對DirectX進行編程
- 23. 如何在沒有作曲家的情況下下載laravel 4?
- 24. Angularjs在沒有超時的情況下無法正常工作的情況
- 25. 在沒有包裝的情況下在QT上使用OpenGL
- 26. 在沒有OpenGL的情況下在C++中繪製3D球體
- 27. 會話可否在沒有Cookie的情況下工作?如果是這樣,在沒有啓用Cookie的情況下,會話如何工作?
- 28. 如何在沒有UIScrollView的情況下放大或縮小UIImageView?
- 29. 如何在沒有SSH的情況下'git pull' - 或 - 密碼?
- 30. 如何在沒有GPS或WiFi的情況下檢測位置?
所以GDI被放置在水平的Direct3D或OpenGL(和基於窗口的繪製實現只在必要的API),但與之平行(它不相互使用)。我對嗎? – SerG
@SerG:大部分是正確的。這些API是獨立的,並且單獨的實現已經存在,儘管視頻驅動程序可以自由地僅實現一個命令集到其硬件並將其他層放在最上面,或者可以具有不完全匹配它們中的任何一個和所有的命令集是專有API /命令集的頂層。最新版本的Windows還需要GDI和GDI +渲染到離屏表面,然後使用DirectX將它們合成以形成整個圖像。但從應用角度來看,它們是完全獨立的。 –