四十八:GPU的工作原理
簡(jiǎn)而言之,GPU的圖形(處理)流水線完成如下的工作:(并不一定是按照如下順序) 頂點(diǎn)處理:這階段GPU讀取描述3D圖形外觀的頂點(diǎn)數(shù)據(jù)并根據(jù)頂點(diǎn)數(shù)據(jù)確定3D圖形的形狀及位置關(guān)系,建立起3D圖形的骨架。在支持DX8和DX9規(guī)格的GPU中,這些工作由硬件實(shí)現(xiàn)的Vertex Shader(定點(diǎn)著色器)完成。 光柵化計(jì)算:顯示器實(shí)際顯示的圖像是由像素組成的,我們需要將上面生成的圖形上的點(diǎn)和線通過(guò)一定的算法轉(zhuǎn)換到相應(yīng)的像素點(diǎn)。把一個(gè)矢量圖形轉(zhuǎn)換為一系列像素點(diǎn)的過(guò)程就稱為光柵化。例如,一條數(shù)學(xué)表示的斜線段,最終被轉(zhuǎn)化成階梯狀的連續(xù)像素點(diǎn)。 紋理帖圖:頂點(diǎn)單元生成的多邊形只構(gòu)成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對(duì)多變形表面的帖圖,通俗的說(shuō),就是將多邊形的表面貼上相應(yīng)的圖片,從而生成“真實(shí)”的圖形。TMU(Texture mapping unit)即是用來(lái)完成此項(xiàng)工作。 像素處理:這階段(在對(duì)每個(gè)像素進(jìn)行光柵化處理期間)GPU完成對(duì)像素的計(jì)算和處理,從而確定每個(gè)像素的最終屬性。在支持DX8和DX9規(guī)格的GPU中,這些工作由硬件實(shí)現(xiàn)的Pixel Shader(像素著色器)完成。 最終輸出:由ROP(光柵化引擎)最終完成像素的輸出,1幀渲染完畢后,被送到顯存幀緩沖區(qū)。
總結(jié):GPU的工作通俗的來(lái)說(shuō)就是完成3D圖形的生成,將圖形映射到相應(yīng)的像素點(diǎn)上,對(duì)每個(gè)像素進(jìn)行計(jì)算確定最終顏色并完成輸出。
四十九:什么是渲染管道?
是指在顯示器上為了顯示出圖像而經(jīng)過(guò)的一系列必要操作。 渲染管道中的很多步驟,都要將幾何物體從一個(gè)坐標(biāo)系中變換到另一個(gè)坐標(biāo)系中去。主要步驟有:
本地坐標(biāo)->視圖坐標(biāo)->背面裁剪->光照->裁剪->投影->視圖變換->光柵化
五十:如何優(yōu)化內(nèi)存?
有很多種方式,例如
1.壓縮自帶類庫(kù);
2.將暫時(shí)不用的以后還需要使用的物體隱藏起來(lái)而不是直接Destroy掉;
3.釋放AssetBundle占用的資源;
4.降低模型的片面數(shù),降低模型的骨骼數(shù)量,降低貼圖的大小;
5.使用光照貼圖,使用多層次細(xì)節(jié)(LOD),使用著色器(Shader),使用預(yù)設(shè)(Prefab)。
6.代碼中少產(chǎn)生臨時(shí)變量
五十一:動(dòng)態(tài)加載資源的方式?
1.Resources.Load();
2.AssetBundle