我竟然意外的懂了什麼是「緩衝區」

2021-09-11 14:49:14 字數 787 閱讀 8792

在看《unity shader入門精要》的時候,講到cpu和gpu的合作,cpu給gpu傳送圖形繪製命令,如果說按照「傳送乙個命令,執行乙個繪製操作」這樣的模式來,就會造成效能浪費啊。你想,如果gpu繪製時間比較長,那cpu是不是要等待,本來這個時候它可以多發幾個命令的;或者cpu被其他任務佔據了,gpu是不是也要等待?

這就是一對一的接頭造成的問題,而建立乙個緩衝區就可以一定程度的緩解。「緩衝」,不要去想戰爭裡的緩衝,而要去想水池的模型:乙個水池,乙個開關進水,另乙個開關放水;當水比較多了,進水就暫停下,水少了就開啟。這樣,放水的開關是不是可以保持一直有水放,完全不需要暫停,而進水的開關也可以自由的控制進水的節奏。對應到上面,「進水」就是cpu施放繪製命令,「放水」就是gpu執行繪製操作。

緩衝的好處是:兩方都按照各自的節奏進行操作,但是卻又可以完全的順序銜接起來。

首先乙個原因我想就是當時使用者體驗這個東西還沒有被深刻強調,很多東西都是「程式設計師式」的取名,windows的很多操作提示真是讓電腦初學者害怕。

另外就是這個「程式設計師式」的取名背後程式邏輯。在程式的角度,「緩衝」的概念是怎麼出來的?

「緩衝區」呢,是***buffer***這個詞的翻譯,緩衝很容易讓人產生戰爭緩衝區(提第3次了)的聯想,進而產生理解錯誤(「渲染管線」的翻譯就是這個,pipeline明明該翻譯成流水線)。在很對用到這個詞的地方,它代表的本質上是一段記憶體資料,伴隨著「一進一出動態儲存」的這個模式。之所以使用buffer這個帶有「減輕」意思的詞,大概是它減輕的連線的雙方的接頭的嚴格程度吧。

舉個形象的例子,兩種情況:

對比一下兩種情況的緊張程度,「減輕」的意思在這吧。

這些竟然是身體的求救訊號!你看懂了嗎?

物華天美 2016 04 01 14 14 03 醫院患者 功能 閱讀 3299 0 舉報 戳上面 藍字 關注,家庭營養師 生活中一些不經意的異常表現可能是身體發出的求救訊號。英國 每日郵報 刊出多位醫學專家總結出的應該看醫生的八種情況。8 40歲後明顯變矮 看骨科 曼徹斯特皇家醫院骨質疏鬆症專家表...

什麼是閉包,我的理解

收藏 首先,我覺得,乙個概念,如果不理解也不影響使用的話,那麼,就沒必要去理解它 去學習它。閉包就是這樣乙個概念,你不理解它也能很好的用它。俺這兩年寫as3程式,是天天在和它打交道,甚至有過乙個function套乙個,乙個方法中套了20多個function的極端例子,但從未深究過它是怎麼實現的,它就...

我眼中的雲 什麼是雲

前面說過,雲就是網路,雲就是計算機,而且在前面的博文中也講了我所理解的雲計算的基本特徵和價值,在這裡,我試著給我眼中的雲乙個定義 雲計算是一種計算資源高度虛擬化,動態化,網路化和管理自動化,並通過網路向使用者按需提供高質量服務的分布式計算體系。1 計算資源的虛擬化使得使用者不再直接依賴物理計算資源,...