本文重點在於如何根據電腦的配置
將電腦分成高中低三個等級
而不是如何制作三種精度的模型
(Windows平台)
為什么會有這種需求呢
首先,高品質模型確實可以表達更完整的內容
但是品質越高,給電腦硬件帶來的壓力也就越大
其次,不能因為想表達高品質模型就舍棄市面上百分之八十的電腦
最后,這也是Unity優化的一項常規手段
我們在玩游戲的時候也都會有最低畫質、中端畫質、最高畫質之間的選擇
本文要實現的,就是這部分內容
聲明
軟件的最低配置需求,最高配置需求
都需要通過不同水平的硬件一步一步測試得來
並且不同的軟件對不同的配置要求也是不同的
故,本文只提供一個大體的思路,具體的范圍划分不在討論范圍之內
要將電腦分為高中低三擋
就需要對電腦硬件有一定的認知
(本文所寫的內容基於本人目前對電腦硬件的認知,歡迎批評指正)
影響電腦配置的因素
1.顯卡 2.內存 3.CPU
這里所指出的三個因素是按照對模型的表現能力影響由高到低排序的
當然,影響電腦性能的硬件還有很多
如:主板、固態硬盤、當然電源也不例外
但是,這些跟模型表現確實不掛鈎,便不作考慮
1.顯卡
決定顯卡性能的因素很多,
理想情況是廠商對每塊顯卡都用唯一ID標識,然后直接通過這個數字划分性能
(然而這只是遐想,實際上並不存在)
首先,需要排除掉集顯,集顯表達3D模型的能力實在有限
可以直接將其划分為低端機,或者是不做模型顯示功能
Unity獲取電腦配置信息的API都在SystemInfo類下面
32902這個數值是固定的
當然,NVIDIA GeForce 系列顯卡(N卡)為4318
AMD Radeon 系列顯卡(A卡)為4098
架構、工藝、流處理器數量、核心頻率、顯存位寬、顯存等
影響顯卡性能的因素大致可以這么排序
然而,即便一項數據再重要,API中沒有提供,或者無法直接通過數據對比的參數,再重要也是沒有用的。。
這是顯卡相關的API
這10個API中,唯一能夠通過數據量化對比的
只有顯存graphicsMemorySize
故,我采取的方式是通過顯存將顯卡划分為高中低三個等級
高級:graphicsMemorySize>=6000
中級:graphicsMemorySize<6000 && graphicsMemorySize>=2000
低級:graphicsMemorySize<2000
這樣分為基本就是GTX 1060以上,即大於6G顯存為高級顯卡大體這樣子
2.內存
內存比較容易判定
首先API只有一個
當然,內存條的頻率也是內存性能的一個影響因素
但是沒有API便也沒有辦法了
高級:systemMemorySize>=8000
中級:systemMemorySize>=4000 && systemMemorySize<8000
低級:systemMemorySize<4000
3.CPU
決定CPU的因素大致有下面幾個:
架構、核心數目、線程數目、主頻、緩存、工藝等
Unity提供了下面幾個API
分別是核心數目、主頻以及處理器名稱
可以使用的只有核心數目和主頻名稱
首先,核心數目區分不大,四核心CPU數量眾多,性能無法得到有效區分
再看主頻,4.0+的主頻確實是高端CPU,但是3.5左右的CPU也是比較繁雜
所以我將CPU這條只作為一個弱限制因素處理,只作為中端門檻限制
低端:processorCount<2
組合
三個因素分析完畢,接下來就要處理或與非了
首先,木桶原理!
要看短板,即使是2080顯卡,配個單核CPU,也需要判定為低端
下面,該貼代碼了(插件又找不到了,只能暫時貼圖片了)