2014-01-24 26 views
1

我只是有一個快速簡單的問題(也可能是相當明顯的給你,但我是相當新的libGDX和一般顯卡):libGDX性能:對於OrthographicCamera.update()最佳時間

什麼時候最好在libGDX中調用camera.update()方法?具體來說,在更新攝像頭之前或之後(例如啓動批處理),我確實想要在渲染方法中使用其他方法[我知道我必須在rende-method中調用它:-)]。或者它完全取決於我?

謝謝回答,

託尼

+0

僅當相機更換時才需要更新相機。如果您的相機不斷移動,則每個渲染的更新都是標準。在調用spriteBatch.setProjectionMatrix(camera.combined)之前; – Lestat

回答

3

不要緊,只要你去做你真正開始畫的東西之前,因爲它傳遞給任何渲染器之前,必須將計算相機的矩陣。例如,對於精靈批次,您必須在致電spriteBatch.setProjectionMatrix(camera.combined);之前的某個時間點更新您的相機,此類程序必須在致電spriteBatch.begin()之前提出。

當你這樣做不會影響性能。無論如何,你不需要擔心這種每幀一次的東西。你的CPU瓶頸幾乎可以肯定是你處理數百個精靈或者粒子的地方,然後將它們移動到批處理中,或者在你使用物理模擬的時候將它們傳遞給批處理。

cocos3d的文檔說最好首先完成所有基於CPU的工作,然後嘗試快速連續完成所有繪製調用,以最大限度地並行使用CPU和GPU。我不知道有多大的區別,以及在libgdx中遵循這個準則的可能性。但是如果它確實有幫助,那麼在libgdx中實現這一點的方式是確保您的sprite批處理的容量至少與您在一個幀中提供的最精靈一樣大(因此它不必沖洗本身在你打電話給end()之前)。如果您正在使用ModelBatch和DecalBatch進行3D繪圖,那麼在調用spriteBatch.end()之前以及將所有精靈添加到批處理之前,您實際上會想要這樣做。

+0

謝謝你,幫了我很多。 – tomet