2011-05-11 58 views
1

所以我一直在通常的320x480分辨率(而不是視網膜)上進行iPhone 3D遊戲。iPhone OpenGL ES:什麼是最快的紋理模式?

我一直在使用工具測試它的性能,它報告渲染器利用率爲64%,而磚瓦利用率爲9%。這意味着性能命中與紋理,混合等有關。

我試過的下一件事是刪除除了天空盒以外的所有圖紙。單獨渲染天空盒使得渲染器%從菜單屏幕跳到40%,該百分比爲20%。

會發生什麼情況?我嘗試禁用GL_BLEND,並將GL_NEAREST設置爲紋理mag過濾器,但渲染器%仍然非常糟糕。

我試圖打開視網膜顯示器(分辨率的四倍)和幀率剛轟炸。

還能做些什麼來減少渲染器的開銷?我認爲肯定會有一些東西,考慮RAGE for iPhone在視網膜分辨率下運行速度爲60fps(實際上我還沒有證實)。

+1

我們在這裏討論的是1.1還是2.0?另外,您是否嘗試過在您的應用程序中運行新的OpenGL ES分析儀(在Xcode 4中)以查看其專家系統指出的內容? – 2011-05-11 16:48:39

+0

1.1,我還沒有嘗試過。明天將嘗試,但首先安裝xcode 4:/ – kamziro 2011-05-11 17:00:43

回答

1

什麼是您的紋理的顏色深度?在許多情況下,32位的深度可以很容易地減少到16(從8888格式到4444),而沒有明顯的質量損失。當然,'最快'的紋理是pvrtc。另外,不要忘記紋理地圖集。

首先,所有這些調整將顯着降低內存消耗,但這只是第一個優勢。第二個優點是壓縮紋理需要更少的帶寬,這就是爲什麼它們會從內存轉移到GPU更快(因爲紋理採樣會更快)。第三個優點是小紋理可以放入緩存並且可以更快地重用。

但是,正如Brad Larson所說,您最好運行OpenGL ES Analyzer並查看它的含義。

1

使用16位幀緩衝區,如果你不需要阿爾法讀取。禁用alpha測試和alphablending。如果不需要,不要忘記禁用照明和z-buffer測試。當開始一個新的框架時,總是清除framebuffer/zbuffer和/或確保在繪製天空盒或背景時完全覆蓋它,而不進行alpha混合和測試。 如果您將紋理縮小到原始大小以下,請使用mipmapping,但不能使用三線性。 您可以嘗試禁用雙線性過濾。通常它是免費的,但是在沒有mipmapping的情況下進行紋理縮小時,它可能會稍微慢一些。 對紋理使用16位或PVR壓縮格式。甚至不考慮其他壓縮格式,它們並不真正被硬件支持。 不要頻繁地切換紋理,儘量將所有內容放入紋理圖集(es)。另外,基於NISTimer的屏幕更新方法可能不是最優的。我聽說有些應用程序(例如iPhone Doom端口)正在單獨線程中進行渲染。