我目前正在使用靈感來自Replica Island的設計在Android上編寫遊戲。也就是說,雙線程方法,一個邏輯線程和一個渲染線程。Android併發渲染器設計
我設置了一個輕量級渲染模塊,它坐在邏輯線程中,它基本上只處理想要渲染的遊戲對象。它將渲染命令發送到渲染線程,如「在x,y渲染sprite f」。
我喜歡這種設計,但目前我的問題在於資源創建。說精靈f需要一個紋理,這將在加載時在邏輯線程中請求它。問題在於,因爲OpenGL上下文位於渲染線程中,所以紋理只能在渲染線程中創建。目前邏輯線程和渲染線程之間唯一的同步點是當它們在一幀的結尾交換渲染隊列時,我想保持這種狀態。
我該如何解決想在邏輯線程上創建紋理,vbo等的問題,同時仍然只渲染呈現線程上的東西?分享OpenGL上下文會是一個好方法嗎?或者引擎的其他設計可能?
編輯:一個替代方案將有另一個隊列,你會從邏輯線程請求。像「創建紋理」等。渲染線程將迭代此隊列並在開始渲染其他隊列之前對其進行處理。我開始喜歡這個解決方案。