2012-10-14 65 views
0

我一直在開發一個基於LWJGL和Java 1.6的2D遊戲,現在已經有3個月了。我的下一個目標是編寫所有非遊戲的東西。這包括菜單,文本輸入框,按鈕以及庫存和字符信息屏幕等內容。由於我是一名計算機工程專業的學生,​​我試圖自己編寫所有的東西(當然,除了LWJGL的OpenGL部分之外),以便在編寫簡單的2D遊戲引擎時「測試」自己。 我知道從頭開始做這些事情需要基本上將紋理映射到四邊形(如按鈕),在它們上面寫東西並測試觸發代碼內其他事件的鼠標/鍵盤事件。遊戲界面設計 - VBO或立即模式?

我有這樣的疑問:我應該在渲染這些元素時使用VBO(正如我用於實際的遊戲渲染)還是使用了立即模式?我不知道立即模式的表現是否會如此下降。另一點是:界面元素是否必須像遊戲本身一樣更新?我不這麼認爲,因爲沒有任何東西真的在移動......真的是這樣的遊戲嗎?

回答

1

立即模式對於任務更直接,您不需要關心緩存並控制組合/批處理。性能下降不是那麼大,除非您在單獨的glBegin..glEnd中使用每個字形呈現大量文本(數千個字母)。如果你沒有在其他地方使用VBO,我會建議你嘗試一下文本輸出和其他更簡單的立即模式。

GUI元素可能不會像遊戲狀態那樣頻繁變化,但有一個問題 - 每次有遊標交互時(例如,按鈕獲取OnMouseOver事件並需要使用高亮顯示),都需要更新它們。這類事件可能會頻繁發生,所以這就是爲什麼需要全速渲染渲染的原因。

+0

我明白了。感謝你的回答。渲染文本是一個壓力大的任務,因爲有太多的紋理切換? – Thiago

+0

理想情況下,您將在一個地圖集中包含所有文本字形,所以沒有紋理切換。加載的原因是您需要逐個字母地解析每個文本行。看看這個SO頁面,可能有幾十個控件,但是字母數量要高得多。 – Kromster