相机录像出现花屏_[Unity3D]花屏问题解决
生活随笔
收集整理的這篇文章主要介紹了
相机录像出现花屏_[Unity3D]花屏问题解决
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
“多年前遇到的花屏問(wèn)題,通過(guò)不斷的測(cè)試、重現(xiàn)、修改、反思,終于得出了最終原因和最終答案!”
- 你的屏幕花了?
去檢查一下,你游戲中的相機(jī)clearFlag的設(shè)置,是不是沒(méi)有clearFlag設(shè)置為SolidColor或者SkyBox的相機(jī)?
解決方案:
一定要有一個(gè)clearFlag設(shè)置為SolidColor或者SkyBox的相機(jī),并且這個(gè)相機(jī)的depth為你所有相機(jī)中depth的最小值(保證這相機(jī)先渲染)- 原理
Unity每個(gè)渲染幀的開(kāi)始,并不會(huì)清空顏色緩沖區(qū)和深度緩沖區(qū),是通過(guò)設(shè)置相機(jī)的clearFlag來(lái)起作用的,具體如下:
因此,如果場(chǎng)景中沒(méi)有一個(gè)改變顏色緩沖區(qū)的相機(jī),在渲染的初始幀,顏色緩沖區(qū)會(huì)保留上一幀的結(jié)果。在此,給一種出現(xiàn)花屏的現(xiàn)象的實(shí)例: 場(chǎng)景中有兩個(gè)相機(jī),設(shè)置分別為:
渲染順序?yàn)?#xff1a; 顏色緩沖上一幀殘留(A) -> 當(dāng)前渲染幀開(kāi)始 -> gameCame 渲染,修改顏色緩沖區(qū) (B)-> uiCam渲染,修改顏色緩沖(C) -> 顯示到屏幕上. 最終渲染的是A+B+C
- 拓展:花屏和卡幀
當(dāng)然,如果在切換界面的時(shí)候,不卡幀,其實(shí)也不會(huì)出現(xiàn)花屏的現(xiàn)象。這一條先占上坑,改天詳細(xì)說(shuō)明。 - 拓展:花屏和多線程渲染
在我的測(cè)試中,如果開(kāi)啟了多線程渲染,一卡幀,很容易就出現(xiàn)花屏。相反,不開(kāi)啟多線程渲染,基本上是不會(huì)有花屏現(xiàn)象的。特別是開(kāi)了垂直同步之后,cpu會(huì)等待gup渲染結(jié)束再進(jìn)行下一幀的計(jì)算。
ps.Unity3d垂直同步有個(gè)坑,和幀率相關(guān) 垂直同步QualitySettings.vSyncCount的設(shè)置,值可以為0,1,2。
- 拓展:花屏和GL.Clear()
總結(jié)
以上是生活随笔為你收集整理的相机录像出现花屏_[Unity3D]花屏问题解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 冻结拆分_还不会固定表头?速来围观Exc
- 下一篇: mysql merge 分区_mysql