2012-11-05 51 views
1

當我渲染一個場景時,我的iphone 4上有一個標準的60fps。然後,我在onGUI中繪製2個紋理,如下所示:onGUI紋理繪製吃到很多fps

void OnGUI() 
    { 
    GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),textureBack); 
     GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),textureFront); 
     } 

並且FPS下降到〜30fps。前面的圖像需要alpha,所以我把它設置爲RGBA 32bit,這個圖像顯然有3 MB,後面的圖像是1.5MB,兩者的分辨率都是1024x768。

有沒有辦法更好地處理這個問題?我想圖像採取最大10fps,因爲.. 30fps是荒謬的!

+1

60fps下降到30fps可能是由於vsync。你的原始場景是<1/60渲染(從而允許60fps),但是如果渲染的附加成本將其推到剛好超過1/60,例如1/59秒,則下一個較低的整體幀速率不是59fps但30fps。 無論如何,你可能填充率有限。如果您的主UI紋理大部分是透明的,那麼您可能會更好地使用更多的幾何體 - 即將其切成更小的形狀/矩形並省略那些'空白'的矩形 –

+0

@SimonF感謝您的回覆!這就是我所做的,我將原始圖像分解成許多其他較小的圖像。我需要實施橡皮擦,因此我的圖像上沒有很多空白區域。無論如何,我可以提高性能?有人建議我切換到GUITextures,因爲GUI.DrawTexture很慢。 – Alex

回答

0

您可以使用具有父攝像頭父紋理的遊戲對象。這樣它就會像使用OnGUI時的紋理一樣跟隨相機。

0

建在統一界面表現不好(沒有繪製調用批處理),您可以切換到GUITextures或任何其他GUI框架...

另一件事也是,如果你使用沒有GUILayout內置的GUI它禁用獲得一些額外的幀..只需在您的start()函數中將useGUILayout設置爲false