計算機如何在最低級別屏幕上繪製任何內容(與X11之類的外部庫無關)?是否應該有彙編命令這樣做? CPU究竟如何控制屏幕上顯示的內容?電腦如何繪製屏幕?
回答
通常在您的視頻卡中有一個稱爲frame buffer的內存區域。在那裏寫一個值意味着建立一個像素的顏色值。
您可以考慮像2D陣列一樣的幀緩衝區,其中每個位代表屏幕上的像素。表示顏色使用不同級別的緩衝區。今天一個普通的幀緩衝區有24級(每個RGB顏色分量8個),並允許2^24種可能的顏色。
現在,通常情況下,通過GPU執行對幀緩衝區的訪問以解決執行性問題:即使CPU可能執行此任務,它也相當昂貴。
基本上與從硬盤讀取相同的方式,或播放聲音效果。
通過將某些數據寫入由內存控制器映射到相關外部硬件(在這些情況下爲硬盤,GPU或聲卡)的特定內存地址。當硬件接收到這些寫入時,它會將寫入的數據解釋爲關於要執行的操作的說明。
CPU實際上是與系統其餘部分隔離的。它真正知道的是內存總線。它可以在該總線上讀取和寫入數據,基本上就是這樣。其中一些讀/寫操作會進入內存,而其他一些可以映射到各種硬件的控制寄存器,或者映射到設備的內存(如果存在),從而允許CPU與其他設備進行通信。
一個現代的GPU有它自己的專用RAM,它可以加載數據。因此,CPU向GPU發送指令,指定主存儲器中的哪裏可以找到用於生成屏幕內容的數據以及如何處理它。然後GPU將這些數據從主存儲器加載到它自己的RAM中,在那裏它執行必要的轉換和計算,然後將其寫入幀緩衝區,montitor始終從中讀取數據。
某處有專門用於視頻屏幕的內存。屏幕上的每個像素都有一定的內存。避免像調色板和黑白等歷史性解決方案,通常有一定數量的紅色,一些藍色和一些綠色。當添加這些顏色時,你可以得到包括白色在內的所有東西(我知道它們不是與油漆一起使用的主要顏色,不用擔心它會起作用)。通常你會發現24位顏色,因爲它易於管理8位,一個字節,紅色,一個綠色字節和一個藍色字符,以及連線內存等。
視頻硬件不斷讀取此內存,並使用任何技術向顯示器發送信號,從而基本上告訴它紅色,綠色和藍色的亮度以點亮特定像素,並不斷使用最新信息掃描屏幕。
使用這種內存的一些常用技術是使用稱爲雙端口的東西,其中兩個實體能夠讀/寫內存。或者有兩個回憶並交換。在任何一種情況下,都有另一個實體,一個處理器,或者是CPU本身,或者現在的視頻卡/芯片中的許多小圖形處理器。無論哪種情況,都會運行一些軟件,這些軟件會計算所有像素的位置和顏色,並將它們寫入視頻內存,具體取決於內存視頻/顯示器端採用的機制。你不希望只有一些你正在輸入的字母的像素在屏幕上一次顯示,然後在下一次顯示時顯示,可能會讓用戶注意到閃爍。視頻存儲器通常映射爲像系統內存一樣,處理器可能會使用它用於訪問非視頻,系統和內存的相同指令。 gpus當然可能,但是一個cpu通常沒有外設特定的指令,uart,gpio,video,usb,storage等。外設通常映射爲cpu內存空間中的某些地址,並使用正常的內存讀/寫指令。由於算法的特殊類型,更重要的是視頻遊戲所需的大量計算,視頻卡使用許多,許多,專用,簡單的圖形處理器,所以這些可能在昨天,今天或明天都有。針對性能或尺寸或功率或其他原因的視頻存儲器特定指令。可能不會改變的是具有幀緩衝存儲器的模型,該存儲器包含一個像素的屏幕,視頻硬件用它來創建發送到顯示器的信號,以便它可以繪製屏幕。
對於我所知道的當前系統是正確的,但是一些較舊的系統沒有支持幀緩衝區。 :-) –
這就是爲什麼我說「避免歷史解決方案」,我努力保持點,並沒有進入無框架緩衝區,甚至沒有幀緩衝區的情況下的無數方式。我認爲關鍵的問題是有彙編指令(很少),如果不是,那麼什麼(內存映射像大多數事情)。可能是一個有趣的社區類型問題,除了幀緩衝區之外,還有什麼解決方案被用於實現計算機視頻/圖形。 –
我實際上只是跑過了一個不使用支持幀緩衝區的當前(在生產中)系統。基於螺旋槳的「Hydra」! –
- 1. 我如何繪製屏幕?
- 2. 如何製作平板電腦,讓屏幕不會翻轉?
- 3. 如何限制平板電腦屏幕方向
- 4. 繪製到屏幕
- 5. 如何在雙屏電腦的屏幕上設置Synergy
- 6. 平板電腦 - 獲取可繪製屏幕分辨率,不是總屏幕分辨率
- 7. 如何繪製屏幕像素
- 8. 如何在屏幕上繪製圖像?
- 9. 平板電腦屏幕問題
- 10. 平板電腦中的屏幕方向
- 11. 平板電腦的屏幕優化
- 12. 鎖定電腦並顯示屏幕
- 13. 平板電腦屏幕媒體查詢多個屏幕因素
- 14. 筆記本電腦關閉屏幕時的屏幕外顯示?
- 15. 在平板電腦上繪製繪圖
- 16. 如何控制屏幕節電模式?
- 17. 掌上電腦:繪製控制位圖
- 18. 用JOGL繪製屏幕外
- 19. 在屏幕上繪製
- 20. 用C#繪製(屏幕外)
- 21. iOS繪製到屏幕
- 22. 強制屏幕重繪
- 23. 繪製到屏幕上
- 24. 連續拍攝電腦屏幕製作視頻
- 25. 強制縮放以在Android平板電腦上填充屏幕
- 26. 如何設置我的平板電腦屏幕?
- 27. 如何根據命令打開平板電腦屏幕?
- 28. 如何使相對佈局容納平板電腦屏幕
- 29. screentoaster.com如何從瀏覽器捕獲您的電腦屏幕?
- 30. 如何多屏幕Android平板電腦應用
該CPU不gpu。 –
@Ash:假設有一個專用的GPU。 – delnan
http://fgiesen.wordpress.com/category/graphics-pipeline/page/2/可能是有趣的。 – user786653