我正在構建一個openGL ES 2遊戲,在Android上使用Java。3 Android線程,如何構造
我目前有兩個線程。 Android用戶界面和openGL。根據我的理解,爲了獲得最佳性能,我需要爲遊戲邏輯創建另一個線程,因此openGL線程可以儘可能快地渲染。
這會讓我變成3. Android UI,openGL和Game Logic。 (我們姑且稱之爲UI,OGL和GL)
糾正我,如果我錯了:
UI開始,讓OGL和GL。 OGL和GL運行,查詢用於輸入的UI。 GL發送繪圖調用到OGL中的隊列。
這裏有兩種情況。 如果GL比OGL花費更多的時間循環,OGL的下一個循環需要等待GL開始它的下一個循環之前完成,以避免只渲染上一幀的一半調用。 如果OGL需要比GL更長的時間,GL需要等到OGL完成再次開始/發送更多的繪製調用。
要做到這一點:
當GL完成與它的循環,它會檢查OGL,看看它做畫繪製調用的當前隊列。如果是這樣,它將啓動GL和OGL的下一個循環。如果不是,它會等待。
當OGL完成時,它檢查GL。如果GL完成,它將再次啓動兩個循環。如果不是,則等待GL,完成後將檢查OGL,然後再次啓動。
很抱歉,如果這是一個有點混淆的措辭..
要illistrate我的想法:
diagram http://img840.imageshack.us/img840/2816/stackoverflowthredpictu.jpg
爲了澄清我的問題: - 將會鋪設的事情了這樣的工作? - 如果不是,哪個更好?
- 什麼具體科目我應該看看做到這一點?我不知道如何在它們之間創建線程或發送信息。
這是我第一次在這裏問一個問題,希望我做對了。 :) 謝謝!
我對OpenGL並不熟悉,但對於Android上的一般多線程,最好避免使用'AsyncTask',並使用標準Java'Runnable'與Android'Handler'。 –