在嵌入式開發(fā)中,有許多因素使60 FPS成為一個不完整的目標(biāo),這不僅僅是一個任意的數(shù)字,而是關(guān)于管理CPU工作負(fù)載以實現(xiàn)卓越的用戶體驗和最大的能效。
當(dāng)談到嵌入式GUI開發(fā)時,每秒60幀(FPS)水印與“平滑”、“美麗”和“流暢”同義。開發(fā)人員和精通技術(shù)的用戶談?wù)?0 FPS作為屏幕更新的黃金標(biāo)準(zhǔn),而供應(yīng)商承諾只有他們的平臺才能幫助你實現(xiàn)這一目標(biāo)。
最終用戶最后一次真正注意到設(shè)備的幀速率是什么時候?更有可能的是,他們抱怨屏幕過渡緩慢或動畫抖動,他們可能在不知道實際原因的情況下將其歸因于FPS。大多數(shù)用戶并不特別關(guān)心每秒幀數(shù);他們關(guān)心用戶體驗(UX)以及需要多長時間插入設(shè)備。
這些因素使60 FPS成為一個不完整的目標(biāo)。這不僅僅是為了實現(xiàn)這個數(shù)字,而是為了在用戶沒有注意到的情況下管理CPU工作負(fù)載。
60是一個好的FPS嗎?
通常情況下,高幀速率聲明來自于設(shè)計用于實現(xiàn)任意水印的應(yīng)用程序,而不是真實系統(tǒng)的真實情況。以下是一些以實現(xiàn)60 FPS為名義的設(shè)計決策示例:
1.用于圖像和動畫的原始文件格式與許多嵌入式開發(fā)人員用于節(jié)省存儲空間的壓縮格式
2.后端軟件和GUI之間的進(jìn)程間通信或事件處理最少
3.地圖和語音助手等應(yīng)用程序通常不需要復(fù)雜的計算或算法
4.使用具有快速訪問時間的硬件和外圍設(shè)備,但并非所有項目和預(yù)算都可以使用(盡管這在MCU領(lǐng)域已不再是一個問題,因為硅供應(yīng)商正在發(fā)布更強大的產(chǎn)品,如本次NXP網(wǎng)絡(luò)研討會所解釋的)
5.測量關(guān)注屏幕的刷新率,而不是應(yīng)用程序呈現(xiàn)到屏幕上的次數(shù)
刷新率會影響FPS嗎?
上述最后一點極為重要,有兩個原因。首先,以60Hz刷新率運行的屏幕與CPU和GPU上的應(yīng)用程序工作負(fù)載幾乎沒有關(guān)系,屏幕隨運行而運行;其次,如果應(yīng)用程序以與屏幕相同的速度刷新整個幀緩沖區(qū),那么嵌入式開發(fā)人員必須認(rèn)真考慮為什么會這樣,消耗寶貴的處理器和內(nèi)存周期不應(yīng)掉以輕心,許多應(yīng)用程序?qū)嶋H上并不需要60 Hz的全屏刷新。
有一個平滑、高效、光滑的GUI更好嗎?還是犧牲掉60 FPS更好?
什么是可接受的FPS?
嵌入式應(yīng)用程序的“正確”FPS是一種能夠創(chuàng)建最佳用戶體驗并將每幀內(nèi)的功耗降至最低的FPS。最好的嵌入式用戶體驗是通過在框架邊界內(nèi)呈現(xiàn)設(shè)計師的屏幕元素和行為意圖來實現(xiàn)的。在60 FPS的情況下,這意味著在16毫秒(ms)內(nèi)完成必要的處理和渲染?!氨匾钡亩x取決于應(yīng)用程序,但一般來說,這并不要求每一幀都重新渲染整個屏幕。由于工作負(fù)載消耗處理器周期和電源,因此只應(yīng)呈現(xiàn)不斷變化的元素。
始終問問自己:系統(tǒng)需要什么,什么時候必須做。從那里,你可以調(diào)高或調(diào)低以獲得所需的FPS。
Storyboard如何幫助
Storyboard旨在優(yōu)化CPU和GPU工作負(fù)載,并最大限度地提高電源效率。Storyboard運行庫僅在必要時繪制和刷新屏幕,并且僅更新幀緩沖區(qū)中更改的元素。此外,在嵌入式開發(fā)中,Storyboard還包括內(nèi)存可視化和性能優(yōu)化工具,使你能夠在部署之前確定應(yīng)用程序占用空間以及目標(biāo)上的運行時特征(包括FPS)。