我目前正在研究一款小型iPhone遊戲,並且正在移植我已經開始爲Mac開發iPhone的3D引擎。這一切都很順利,Mac引擎的所有功能現在都在iPhone上。引擎並沒有完成,但現在至少我有了基本的資源管理,場景圖和一個可輕鬆製作和移動物體的構造。OpenGL渲染狀態管理
我現在擁有的屏幕截圖:http://emle.nl/forumpics/site/planes_grid.png。這架小飛機是我幾年前製作的一款測試物體,當時我正在製作一款遊戲。這與我現在正在開發的遊戲無關,但當然,3D引擎及其設施也是如此。
現在,我已經談到材料的主題,描述哪些紋理,燈光等屬於可渲染對象。這意味着每個對象都有很多OpenGL的clientstate和glEnable/glDisable調用。你會建議如何最小化這些狀態變化? 目前我按材質排序,因爲具有相同材質的物體根本不需要任何更改。我創建了一個名爲RenderState的類,用於緩存當前的OpenGL狀態,並且僅應用選擇不同材質時不同的成員。這是一個可行的解決方案嗎?或者當引擎成熟並且需要緩存越來越多的狀態時,它會變得無法控制嗎?
你有一個點。然而,至少有一個稍微普遍和優化的圖形引擎會讓我快速加快我的幾個想法。我認爲,渲染性問題仍然有效,因爲遊戲特定的引擎也必須執行一些渲染管理。 – Emiel 2009-07-20 14:01:20